如何在SQLAlchemy的`__table_args__`中传递位置和关键字参数


问题内容

是否可以使用外键引用并在sqlalchemy的同一表上具有oracle分区?

这是将oracle分区定义__table_args__为dict的方式

class SQLAlchemyTable(mx.InsertedAtUpdatedAtMixin, Base):
    __tablename__ = 'SQLALCHEMY_TABLE'
    __table_args__ = {
        'info': {
            'oracle_partition': """
                PARTITION BY RANGE (PARTITION_DATE) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
                ( PARTITION p_init VALUES LESS THAN (TO_DATE('07-12-2018','DD-MM-YYYY')))
            """
        },
    }

我在文档中发现,ForeignKeyConstraint定义在其中,__table_args__但定义为元组而不是字典

__table_args__ = (
    ForeignKeyConstraint(('LIST', 'STATE'), ['CODES.LIST_ID', 'CODES.ID']),
)

有什么帮助吗?


问题答案:

您可以在中传递位置参数和关键字参数__table_args__,如“表配置”中所示。使用保存位置参数的元组和关键字参数字典作为元组的最后一项:

class SQLAlchemyTable(mx.InsertedAtUpdatedAtMixin, Base):
    ...
    __table_args__ = (
        ForeignKeyConstraint(('LIST', 'STATE'), ['CODES.LIST_ID', 'CODES.ID']),
        {
            'info': {
                'oracle_partition': """
                    PARTITION BY RANGE (PARTITION_DATE) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
                    ( PARTITION p_init VALUES LESS THAN (TO_DATE('07-12-2018','DD-MM-YYYY')))
                """
            }
        }
    )