我有一个相当复杂的对象,它将一些其他对象作为其成员。像这样:
from engine import engine
Class Car(object):
def __init__(self,engine_type):
self.engine=engine(engine_type)
是否有一种无痛的方法将这种嵌套定义映射到数据库,例如使用SQLAlchemy?
感谢您的帮助。我正在学习SQLAlchemy并与ORMS合作。
答案 0 :(得分:1)
你想要完成什么并不是很清楚。如果我理解,你试图定义具有指向另一个引擎模型的引擎属性的Car模型,并通过使用engine_type创建Car对象,代码应该是:
然后将其分配给Car对象。
如果是这样,您应该执行以下操作。
class Engine(object):
def __init__(self, engine_type):
self.engine_type
@staticmethod
def load(engine_type):
return session.query(Engine)\
.filter(engine_type==engine_type).one()
class Car(object):
def __init__(self, engine_type):
try:
engine = Engine.load(engine_type)
except NoResultsFound:
engine = Engine(session_type)
session.add(engine)
self.engine=engine
您需要自定义在Car mapper上创建'引擎'关系,并且您还需要调整代码以在需要时启用会话对象的范围。