【发布时间】:2020-10-04 07:46:23
【问题描述】:
我正在使用 flask-migrate 来处理表的创建和维护。我有多个具有不同架构的表。
class A(db.model):
__tablename__ = 'A'
__table_args__ = {'schema': 'public'}
# rest of data
class B(db.model):
__tablename__ = 'B'
__table_args__ = {'schema': 'schema_b'}
# rest of data
所以当我运行flask db init 和flask db migrate 时,会在迁移文件夹中创建一个迁移脚本。但是当我运行flask db upgrade 在数据库中添加表时,它显示错误
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.InvalidSchemaName) schema "schema_b.B" does not exist
当我搜索这个问题时,我发现了这个include_schemas 和migrate using different schema,在这两个部分都提到在configure 中使用include_schemas=True 在migration/env.py 中。此外,答案中的解决方案中提到的链接具有无效链接,所以这对我来说变得很少编程。
我已经做出了相应的改变。然后我正在运行flask db migrate,它正在检测具有所有模式的所有表。但是当我正在运行flask db upgrate
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.InvalidSchemaName) schema "schema_b.B" does not exist
错误再次出现。
帮助我,如何使用flask migrate 解决这个问题。要创建一个表,我有一个运行良好的 SQL 命令。
【问题讨论】:
-
架构是否存在于您的数据库中?我已经有一段时间没有这样做了,但我相信架构需要手动创建。您只需要添加一个在迁移中创建架构的 SQL 操作。
-
@Miguel,没有架构不存在。我以为它会自动处理,让我测试一下。感谢您的信息
-
@Miguel 感谢这项工作。请在答案中添加您的建议,以便将来有所帮助
-
太棒了。答案已添加。谢谢。
标签: python postgresql flask sqlalchemy flask-migrate