Flask 使用不同的postgres模式进行迁移(uu table_uargs_uu={&';模式';:';测试&#模式';]})

Flask 使用不同的postgres模式进行迁移(uu table_uargs_uu={&';模式';:';测试&#模式';]}),flask,flask-sqlalchemy,alembic,flask-migrate,Flask,Flask Sqlalchemy,Alembic,Flask Migrate,我正在尝试使用烧瓶,sqlalchemy和烧瓶 但每次运行manage.py migrate时,alembic都会将我的模型检测为一个新表 我认为我在模型中放入了表参数以将表存储在不同的postgres模式中: class Entry(db.Model): __table_args__ = {'schema': app.config['BASE_SCH']} id = db.Column(db.Integer, primary_key=True) title = db.C

我正在尝试使用烧瓶,sqlalchemy和烧瓶

但每次运行manage.py migrate时,alembic都会将我的模型检测为一个新表

我认为我在模型中放入了表参数以将表存储在不同的postgres模式中:

class Entry(db.Model):
    __table_args__ = {'schema': app.config['BASE_SCH']}
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100))
    slug = db.Column(db.String(100), unique=True)
    body = db.Column(db.Text)
    status = db.Column(db.SmallInteger, default=STATUS_PUBLIC)
    created_timestamp = db.Column(db.DateTime, default=datetime.datetime.now)
    modified_timestamp = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now)
如果我想删除我的模型的表参数行,烧瓶迁移将正常工作。将我的表存储在puclic postgres模式中

那么,如何在flask中使用不同的postgres表模式呢


谢谢

最终解决了这个问题:configure中有一个
include_schemas
选项,您必须设置为
True
,以强制Alembic在生成迁移之前扫描所有架构

(略)更多详情:


我不完全清楚为什么Alembic/Flask Migrate在没有设置此选项的情况下为非默认模式中的表生成迁移。。。或者更确切地说,它会为非默认模式创建迁移,但不会在数据库中发现这些表,这是一个令人惊讶的行为。

您是否检查了生成的迁移脚本?我假设它缺少
模式
,如果你手动添加它,事情可能会对你有用。嗨@Miguel,谢谢你的评论。。。在迁移脚本中,每个创建表块的末尾都有一个模式定义。我怀疑alembic在迁移过程中可能无法识别不同的表模式(Postgre)。我有完全相同的问题-有一个不在默认模式中的模型,初始迁移看起来不错(指定了模式),运行它确实会在正确的模式中创建表。但是对flask db migrate的下一个调用创建了一个新的迁移,它与第一个迁移完全相同,就像Alembic没有看到该表已经存在于数据库中一样。