SQLalchemy与嵌套类
我有一个比较复杂的对象,它包含了几个其他的对象,类似这样:
from engine import engine
Class Car(object):
def __init__(self,engine_type):
self.engine=engine(engine_type)
有没有什么简单的方法可以把这种嵌套的定义映射到数据库里,比如用SQLAlchemy?
谢谢你的帮助。我正在学习SQLAlchemy,并且在使用ORM。
1 个回答
1
你想要实现的目标不是很清楚。如果我理解得没错,你是想定义一个汽车模型,这个模型有一个引擎属性,这个属性指向另一个引擎模型。然后在创建汽车对象的时候,如果指定了引擎类型,代码应该要么:
- 创建一个新的引擎对象,如果这个引擎类型还不存在的话
- 如果这个引擎类型已经存在,就加载这个引擎对象
然后把它分配给汽车对象。
如果是这样的话,你需要做以下几件事。
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
你需要自己定义在汽车映射器中创建“引擎”关系的部分,同时还需要对代码进行一些调整,以便在需要的时候能够使用会话对象的范围。