跳转到主要内容

Python的CQRS和事件源框架

项目描述

# Kant框架
[![构建状态](https://travis-ci.org/patrickporto/kant.svg?branch=master)](https://travis-ci.org/patrickporto/kant)
[![codecov.io](https://codecov.io/github/patrickporto/kant/coverage.svg?branch=master)](https://codecov.io/github/patrickporto/kant?branch=master)
[![PyPI包最新发布](https://img.shields.io/pypi/v/kant.svg)](https://pypi.python.org/pypi/kant)
[![支持的版本](https://img.shields.io/pypi/pyversions/kant.svg)](https://pypi.python.org/pypi/kant)
[![支持的实现](https://img.shields.io/pypi/implementation/kant.svg)](https://pypi.python.org/pypi/kant)


一个安全的人性化CQRS和事件源框架。

## 功能支持

* 事件存储
* 乐观并发控制
* JSON序列化
* SQLAlchemy投影
* 快照 **[进行中]**

康德官方支持Python 3.5-3.6。

## 入门

创建声明性事件

```python
from kant import events

class BankAccountCreated(events.Event)
id = events.CUIDField(primary_key=True)
owner = events.CharField()

class DepositPerformed(events.Event)
amount = events.DecimalField()
```

创建聚合以应用事件

```python
from kant import aggregates

class BankAccount(aggregates.Aggregate)
id = aggregates.CUIDField()
owner = aggregates.CharField()
balance = aggregates.DecimalField()

def apply_bank_account_created(self, event)
self.id = event.id
self.owner = event.owner
self.balance = 0

定义函数 apply_deposit_performed(self, event)
self.balance += event.amount
```

现在,保存事件

```python
从 kant.eventstore 导入 connect

await connect(user='user', password='user', database='database')

创建银行账户事件存储
conn.create_keyspace('bank_account')

创建事件
bank_account_created = BankAccountCreated(
id=123,
owner='John Doe',
)
deposit_performed = DepositPerformed(
amount=20,
)

bank_account = BankAccount()
bank_account.dispatch([bank_account_created, deposit_performed])
bank_account.save()

stored_bank_account = BankAccount.objects.get(123)
```

## 安装
要安装 Kant,只需使用 [pipenv](pipenv.org)(或 pip)

```bash
$ pipenv install kant
```



## 贡献

请阅读贡献指南 [CONTRIBUTING](CONTRIBUTING.md)。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

kant-2.1.0.tar.gz (9.0 kB 查看哈希值)

上传时间 源代码

由支持