Skip to main content
 首页 » 编程设计

python之带有嵌套类的 SQLalchemy

2025年05月04日14Leo_wl

我有一个相当复杂的对象,它需要一些其他对象作为它的成员。像这样:

from engine import engine 
 
Class Car(object): 
 
    def __init__(self,engine_type): 
        self.engine=engine(engine_type) 

是否有一种轻松的方法可以将此类嵌套定义映射到数据库,例如使用 SQLAlchemy?

感谢您的帮助。我正在学习 SQLAlchemy 并使用 ORMS。

请您参考如下方法:

不太清楚您要完成什么。如果我理解,您正在尝试使用指向另一个引擎模型的引擎属性定义 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 

您需要自己定义以在汽车映射器上创建“引擎”关系,并且您还需要调整代码以在需要时启用 session 对象的范围。