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

时间:2018-12-14 09:59:41

标签: python sqlalchemy

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

这是在__table_args__中将oracle分区定义为字典的方式

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']),
)

有帮助吗?

1 个答案:

答案 0 :(得分:1)

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

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')))
                """
            }
        }
    )