0
在SQLAlchemy中,我想定義一個mixin,它會自動在繼承表中創建一個索引。SQLAlchemy基於繼承的表鍵在mixin中添加索引?
假設繼承表有一個名爲'keys'的成員列表,我希望mixin在繼承表中創建一個多列索引,而不是在鍵中列出的列中。但是,在創建表之前,mixin不知道密鑰是什麼。
我該怎麼做?
在SQLAlchemy中,我想定義一個mixin,它會自動在繼承表中創建一個索引。SQLAlchemy基於繼承的表鍵在mixin中添加索引?
假設繼承表有一個名爲'keys'的成員列表,我希望mixin在繼承表中創建一個多列索引,而不是在鍵中列出的列中。但是,在創建表之前,mixin不知道密鑰是什麼。
我該怎麼做?
實施例:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy import MetaData, Column, Index, Integer
metadata = MetaData()
Base = declarative_base(metadata=metadata)
class MyMixin(object):
@declared_attr
def __table_args__(cls):
return (Index('test_idx_%s' % cls.__tablename__, *cls.INDEX),)
class MyModel(MyMixin, Base):
__tablename__ = 'atable'
INDEX = ('a', 'b',)
id = Column(Integer, primary_key=True)
a = Column(Integer)
b = Column(Integer)
c = Column(Integer)
if __name__ == '__main__':
from sqlalchemy import create_engine
engine = create_engine('sqlite:///', echo=True)
metadata.bind = engine
metadata.create_all()