数据库
PepperBot选择通过数据库,来实现进程间的数据共享
orm为ormar,基于sqlalchemy + pydantic的异步orm,支持sqlite、mysql、postgresql等数据库
这里只是简单涉及了一些ormar的用法,具体用法见ormar的文档
默认使用sqlite,可以通过.env修改数据库配置
开发者可用的表
PepperBot提供了一个键值对形式的Share表,便于开发者存储一些结构比较简单的数据
语法类似JavaScript的localStorage
可以存储任意可JSON序列化的数据
from pepperbot.store.orm import get_value, set_value, delete_value
await get_value('key') # 如果不存在,会返回None
await get_value('key', default='default')
await set_value('key', 'value')
await set_value('key', [1, 2, 3])
await set_value('key', {'a': 1, 'b': 2})
await set_value('key', True)
await delete_value('key')
实现自己的表
开发者只需要定义好模型即可,PepperBot会负责创建表等操作(只要设置了Meta的database和metadata)
这是一个简单的例子
ormar的类型,在vscode下,有点小问题,如果不想看到报错,可以手动cast或者type: ignore
from typing import Any, cast
import ormar
from pepperbot.store.orm import database, metadata
class GPTInfo(ormar.Model):
    class Meta:
        tablename = "gpt_info"
        database = database
        metadata = metadata
    id: int = cast(int, ormar.Integer(primary_key=True))
    account: str = cast(str, ormar.String(max_length=20))
    count: int = cast(int, ormar.Integer(default=0))
使用建议
数据库迁移
ormar基于sqlalchemy,所以我们使用alembic来进行数据库迁移