首页 > 解决方案 > 我是否需要每次在 peewee 中调用创建表?

问题描述

我在一个项目中工作,其中我有不同的项目具有相同的数据库架构,所以我使用了 peewee 模型,其中:

dynamic_db = SqliteDatabase(None)
class BaseModel(Model):
    class Meta:
        database = dynamic_db
class KV (BaseModel):
    key = TextField()
    value = IntegerField()

每当我创建新项目时,我都会调用一个函数

dynamic_db.init(r'{}\database.db'.format(ProjectName.upper()))
dynamic_db.connect()
dynamic_db.create_tables([KV])
dynamic_db.close()

问题是一旦创建了这个数据库,我就无法使用 peewee 访问。当我尝试创建记录时:
KV.create(key = 'Saul', value = 123)
我收到此错误:
peewee.InterfaceError: Error, database must be initialized before opening a connection.

对于peewee,我将不胜感激任何帮助或食谱。

标签: pythonsqlitepeewee

解决方案


我终于能够创造一个记录。我没有提到我试图在另一个文件中创建它们,但过程与答案中发布的一个 coleifer 相同。我在其中创建 peewee 模型的文件是databases.py,所以在另一个文件中我执行以下操作:

import databases

databases.db.init('foo.db')

databases.KV.create(name = 'Saul', value= 123)

谢谢!


推荐阅读