Я использую Python 2.7 и SQLAlchemy 0.9.8 и пытаюсь использовать частичные индексы.SQLAlchemy Partial Index с составными ключами с тем же именем
У меня есть две таблицы (только соответствующая часть)
class DesignerRange
__tablename__ = 'designer_ranges'
shortcode = Column(Unicode(12))
class Design
__tablename__ = 'designs'
shortcode = Column(Unicode(12))
designer_range_id = Column(
Integer,
ForeignKey('designer_ranges.id'),
nullable=False,
)
designer_range = relationship(
DesignerRange,
backref=backref(
'designs',
single_parent=True,
),
lazy='joined',
)
И я хочу, чтобы создать частичный индекс, что при шорткод в дизайн не является нулевым (он существует) оно должно быть уникальным в пределах DesignerRange ,
Я пытаюсь что-то вроде этого
@declarative.declared_attr
def __table_args__(cls):
return (
Index('design_shortcode',
table('designer_ranges', column('shortcode')).c.shortcode,
cls.shortcode, unique=True,
postgresql_where=(cls.shortcode!=None)),
)
Это результирующее Alembic миграция
op.create_index('design_shortcode', 'designs', ['shortcode', 'shortcode'], unique=True, postgresql_where=sa.text('designs.shortcode IS NOT NULL'))
Но я получаю это предупреждение
sqlalchemy/sql/base.py:508: SAWarning: Column 'shortcode' on table <sqlalchemy.sql.selectable.TableClause at 0x7f50a1768550; designer_ranges> being replaced by Column('shortcode', Unicode(length=12), table=<designs>), which has the same key. Consider use_labels for select() statements.
Я понятия не имею, куда примените use_labes в этом случае, похоже, существует только в предложении select. Благодаря