SQLAlchemy不能使用`__table_args__`同时设置schema相关的配置和索引?

问题描述 投票:0回答:1

这是我的模型基类:

@declarative_mixin
class FixtureMixin:
    __table_args__ = {
        "mysql_engine": "InnoDB",
        "mysql_charset": "utf8",
        "extend_existing": True,
    }
    pass

对于子类,我希望能够在

__table_args__
中配置索引,同时保留公共配置,如下所示:

class TestTable(db.Model, FixtureMixin):
    __tablename__ = "test_table"

    __table_args__ = FixtureMixin.__table_args__.copy()
    __table_args__.update({
        "schema": "test",
        "comment": "xxx",
        "mysql_indexes": [Index('unique_org_test_key', "name", "org_id", unique=True)]
    })
    pass

但是,当我

create_all
时,它并没有按预期工作。想要达到预期的效果该怎么办?

sqlalchemy flask-sqlalchemy
1个回答
0
投票

组合参数,改变参数传递方式,就像:

class TestTable(db.Model, FixtureMixin):
    __tablename__ = "test_table"
    __table_args__ = (
        db.UniqueConstraint("name", name='unique_org_test_key'),
        dict(
            **FixtureMixin.__table_args__,
            schema="test",
            comment="xxx"
        )
    )
© www.soinside.com 2019 - 2024. All rights reserved.