小编Log*_*ers的帖子

从 sqlalchemy mixins 继承并添加索引

给定一个带有索引的 mixin,如何向继承该 mixin 的模型添加额外的索引?对于像 mixin 这样的索引名称,idx__TABLENAME__COLUMNmixin 无法为其自身获取 TABLENAME。如果__tablename__为 mixin 指定了 a,则会出现重复的索引名称。

示例代码如下。

import sqlalchemy as sql
from sqlalchemy import Column, Index, String, Integer
from sqlalchemy.ext.declarative import declared_attr, declarative_base


Base = declarative_base()

class MixinOwner(object):
    id = Column('id', Integer, primary_key=True)
    owner = Column('owner', String)

    @declared_attr
    def __table_args__(cls):
        return (Index('idx__%s__owner' % cls.__tablename__, 'owner'), )


class Letter(MixinOwner, Base):
    __tablename__ = 'letter'
    a = Column('a', String)
    b = Column('b', String)

    @declared_attr
    def __table_args__(cls):
        mixin_indexes = list(MixinOwner.__table_args__)  # <--- Error (MixinOwner does …
Run Code Online (Sandbox Code Playgroud)

python sql sqlalchemy

1
推荐指数
1
解决办法
1121
查看次数

标签 统计

python ×1

sql ×1

sqlalchemy ×1