为此方 Bot 接入数据库 #49
Reference in New Issue
Block a user
No description provided.
Delete Branch "database"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
坏枪开发了一个新的分支,关于数据库的接入。我们可以讨论并考虑这个模块的相关事项,并做出一些进一步的完善。如果没有什么问题,我会摘掉 WIP 标签并合并到主分支。
其实挺好的,但是确实有点过度设计了,有点打不中靶子的感觉,好头疼!
坏枪如果有时间可以试着改改,要是帮得上我也可以改改,像是之前想到的更合理的迁移、引入异步 Sqlite 库之类的事情……
附赠:来自 AI 的审核意见
😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭
@ -4,1 +3,4 @@__pycache__*.db直接忽略
*.db吗,要是有人写了个assets/template/template_db_xxx.db不就一块忽略了么@ -49,2 +50,4 @@nonebot.load_plugin("nonebot_plugin_analysis_bilibili")# 预加载preinit("konabot/plugins")要不同步改一下
scripts/test_plugin_load.py吧,我可以在 CI 流程里面测试插件能否顺利(在 Linux 环境)加载@ -0,0 +1,64 @@import osimport sqlite3Nonebot2 框架是个异步框架来着,如果不支持异步的话或许有点不太好(?
要不坏枪找个异步框架看看
@ -0,0 +5,4 @@class DatabaseManager:"""超级无敌神奇的数据库!"""@classmethod其实有点不那么想用单例模式。我一直想的是,要是可以支持不同插件用不同 db 文件,这样就不会互相干扰了
@ -0,0 +32,4 @@cursor.execute(command, params or ())conn.commit()cursor.close()conn.close()卧槽,每一条 SQL 都开了关了,那性能瓶颈估计就在文件 IO 上了
有个东西叫连接池来着
@ -0,0 +35,4 @@conn.close()@classmethoddef execute_by_sql_file(cls, file_path: str, params: Optional[tuple] = None) -> None:file_path要不支持一下pathlib.Path对象?感觉这个Path更好用而且更常用@ -0,0 +40,4 @@with open(file_path, 'r', encoding='utf-8') as f:command = f.read()# 按照需要执行多条语句commands = command.split(';')假如有个小可爱在 SQL 里使用了带有分号的字符串,那又该如何应对呢(
@ -0,0 +5,4 @@# 初始化数据库表DatabaseManager.execute_by_sql_file(Path(__file__).resolve().parent / "sql" / "create_table.sql"草,怎么这里又直接传
pathlib.Path了,我看你前面定义的只允许str啊哦耶
WIP: 为此方 Bot 接入数据库to 为此方 Bot 接入数据库