石墨烯和 SQLAlchemy:派生自基础对象类型
Posted
技术标签:
【中文标题】石墨烯和 SQLAlchemy:派生自基础对象类型【英文标题】:Graphene and SQLAlchemy: derivate from a base object type 【发布时间】:2021-07-11 21:56:36 【问题描述】:我正在使用 Flask、Graphene、SQLAlchemy 和 Graphene-SQLAlchemy 构建一个应用,其中我实现了以下模型:
class User(db.Model):
__tablename__ = "user"
id = Column(Integer, primary_key=True)
name = Column(Text, nullable=False)
email = Column(Text, nullable=False)
class BusinessUser(db.Model):
__tablename__ = "bis_user"
id = Column(Integer, ForeignKey("user.id"), primary_key=True)
vatNumber = Column(Text, nullable=False)
class LVUser(db.Model):
__tablename__ = "lv_user"
id = Column(Integer, ForeignKey("user.id"), primary_key=True)
lv_num = Column(Integer, nullable=False)
我的目标是定义三种 GraphQL 类型:
type User
id : ID
name : String
email : String
type BusinessUser
id : ID
name : String
email : String
vatNumber : String
type LVUser
id : ID
name : String
email : String
lvNum : Integer
但我正在努力寻找一种高效而优雅的方式。有什么办法可以让我们说一个“基本”对象类型User
并在我的基本类型的顶部创建BusinessUser
和LVUser
类型,同时提供额外的字段?
【问题讨论】:
【参考方案1】:请阅读Composing Mapped Hierarchies with Mixins,它似乎准确地描述了您正在寻找的方案和解决方案。
但是,从其他两个表到 user.id
的外键这一事实暗示我可以使用 Mapping Class Inheritance Hierarchies 实现继承,而策略将取决于数据库级别的实际表的设计方式.
【讨论】:
谢谢,这是正确的!如您提供的链接中所述,我使用继承解决了我的问题。以上是关于石墨烯和 SQLAlchemy:派生自基础对象类型的主要内容,如果未能解决你的问题,请参考以下文章