用Peewee创建的表似乎消失在瘦人工智能中

2024-05-16 12:45:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在用peeweeorm为postgresql编写一个flask应用程序。它在过去运行得很好,但似乎有什么东西被打乱了,我不清楚如何继续调试这个问题。在

首先,我启动数据库如下:

/usr/local/pgsql/bin/psql -D /usr/local/pgsql/data

我创建了一个新数据库:

^{pr2}$

按如下方式配置连接:

db = peewee.PostgresqlDatabase(
'indico',
host="/tmp/",
user = 'indico', # There is also an indico user, this is not a db name confusion
password = 'password',
)

创建所需的表:

class PostgresqlModel(peewee.Model):
    """A base model that will use our Postgresql database"""
    _id = peewee.PrimaryKeyField()

    class Meta:
        database = db
PostgresqlModel.create_table()

但当我尝试实际访问创建的表时:

/usr/local/pgsql/bin/psql -d indico -U indico
>>> \dt
no relations found

似乎什么也没出现。如果我再次尝试创建它们,我会得到一个错误消息,说该关系已经存在,并且虽然我能够保存对象,但我无法检索它们。在

我觉得我在这里对路径和配置做了一些愚蠢的事情,但我似乎搞不清楚,而且我也找不到关于我应该在这里做的适当反省的文档。不是在寻找一个神奇的解决办法,但如果有人能给我指出正确的方向,我将不胜感激。在


Tags: 数据库dbbinisusrlocalpassworddatabase
1条回答
网友
1楼 · 发布于 2024-05-16 12:45:51

原来这是peewee的自动提交行为的子项。如果autocommit设置为False,则创建的任何数据库都只能在活动数据库提交中访问。因此,如果在导入模块时创建数据库。在

db.commit()添加到create_table序列的末尾似乎可以解决这个问题。在

if __name__ == "__main__":
    User.create_table()
    db.commit() 

相关问题 更多 >