Как передать позиционные и ключевые аргументы в `__table_args__` в SQLAlchemy - PullRequest
0 голосов
/ 14 декабря 2018

Можно ли использовать ссылку на внешний ключ и иметь раздел Oracle на той же таблице в sqlalchemy?

Вот как раздел 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']),
)

Любая помощь?

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете передавать как позиционные, так и ключевые аргументы в __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')))
                """
            }
        }
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...