Python 如何从SQLAlchemy模型确定子对象的类型?
我有以下SQLAlchemy模型:Python 如何从SQLAlchemy模型确定子对象的类型?,python,sqlalchemy,Python,Sqlalchemy,我有以下SQLAlchemy模型: class PersonConsent(ModelAbstract): __tablename__ = "personConsent" id = db.Column(db.Integer, primary_key=True) patientId = db.Column(db.Integer, db.ForeignKey("person.id")) authorizedPersonId = db.Column(db.Integer
class PersonConsent(ModelAbstract):
__tablename__ = "personConsent"
id = db.Column(db.Integer, primary_key=True)
patientId = db.Column(db.Integer, db.ForeignKey("person.id"))
authorizedPersonId = db.Column(db.Integer, db.ForeignKey("person.id"))
attachmentId = db.Column(db.Integer)
# Additional models
authorizedPerson = db.relationship("Person", foreign_keys=[authorizedPersonId])
consents = db.relationship("PersonConsentType",
secondary=personConsentToTypeMap,
primaryjoin=id==personConsentToTypeMap.c.consentId,
secondaryjoin=PersonConsentType.id==personConsentToTypeMap.c.consentTypeId)
仅考虑个人同意模型,如何确定构成同意
字段的项目模型?
比如说
type(PersonConsent.approves)==PersonConsentType
使用inspect
功能并遵循正确的属性获取关系的目标模型
from sqlalchemy import inspect
mapper = inspect(PersonConsent)
property = mapper.relationships['consents']
target = property.mapper.class_
assert target is PersonConsentType
从技术上讲,您可以通过执行
PersonConsent.approves.property.mapper.class.
来实现这一点,但它不太通用。例如,您可以使用上面的检查来循环所有关系,即使您不知道它们的名称。使用inspect
函数并遵循正确的属性来获取关系的目标模型
from sqlalchemy import inspect
mapper = inspect(PersonConsent)
property = mapper.relationships['consents']
target = property.mapper.class_
assert target is PersonConsentType
从技术上讲,您可以通过执行PersonConsent.approves.property.mapper.class.
来实现这一点,但它不太通用。例如,您可以使用上面的检查来循环所有关系,即使您不知道它们的名称