gpt4 book ai didi

python - alembic create_table,检查表是否存在

转载 作者:太空狗 更新时间:2023-10-30 00:19:25 25 4
gpt4 key购买 nike

我有一个创建表的 alembic 升级脚本,但如果表已经存在,我不希望它创建该表。

根据alembic doc , 我可以将关键字参数传递给 sqlalchemy.schema.table 可接受的 op.create_tables ,所以我使用了 keep_existing 关键字:

op.create_table('foo_model',
sa.Column('foo_id', sa.Integer(), nullable=False),
sa.Column('foo_str', sa.String(length=255), nullable=True),
sa.PrimaryKeyConstraint('foo_id'),
keep_existing= True
)

但是我仍然收到表已存在的错误。

sqlalchemy.exc.InternalError: (InternalError) (1050, u"Table 'foo_model' already exists") '\nCREATE TABLE foo_model (\n\tfoo_id INTEGER NOT NULL AUTO_INCREMENT, \n\tfoo_str VARCHAR(255), \n\tPRIMARY KEY (foo_id)\n)\n\n' ()

最佳答案

您可以像这样获取现有表的列表:

from sqlalchemy.engine.reflection import Inspector

conn = op.get_bind()
inspector = Inspector.from_engine(conn)
tables = inspector.get_table_names()

然后检查表是否已经存在

if table_name not in tables:
op.create_table()

关于python - alembic create_table,检查表是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com