数据库
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
来进行数据库迁移