具有多个对象层次结构的SQLalchemy

具有多个对象层次结构的SQLalchemy,第1张

具有多个对象层次结构的SQLalchemy

感谢van和使用继承,如果可以帮助其他任何人,这是我的解决方案:

from sqlalchemy import (    Column,    Integer,    Text,    ForeignKey,)from sqlalchemy.orm import (    scoped_session,    sessionmaker,    relationship,    backref,)import uuidfrom sqlalchemy.ext.declarative import declarative_basefrom zope.sqlalchemy import ZopeTransactionExtensionDBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))base = declarative_base()class Node(base):    """    An object representing a node in the hierarchy.    All the other objects inherit from Node.    """    def getID():        return uuid.uuid1().hex    __tablename__ = 'Node'    ID = Column(Text, primary_key=True, default=getID)    ParentID = Column(Text, ForeignKey('Node.ID'))    type = Column(Text(50))    Children = relationship("Node",     backref=backref('Parent', remote_side=[ID], uselist=False) )    __mapper_args__ = {        'polymorphic_identity':'Node',        'polymorphic_on':type    } class A(Node):    __tablename__ = 'A'    ID = Column(Text, ForeignKey('Node.ID'), primary_key=True)    __mapper_args__ = {        'polymorphic_identity':'A',    }class B(Node):    __tablename__ = 'B'    ID = Column(Text, ForeignKey('Node.ID'), primary_key=True)    __mapper_args__ = {        'polymorphic_identity':'B',    }class C(Node):    __tablename__ = 'C'    ID = Column(Text, ForeignKey('Node.ID'), primary_key=True)    __mapper_args__ = {        'polymorphic_identity':'C',    }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5668359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存