gpt4 book ai didi

Python+SQL炼金术 : Getting mapper class from InstrumentedList?

转载 作者:行者123 更新时间:2023-11-28 22:56:36 25 4
gpt4 key购买 nike

我想动态获取 InstrumentedList 实例使用的 SQLAlchemy 映射器类。

我有一个 1-M ParentClass-ChildClass(我们称列为 myRelation),parentInstance.myRelation 是 InstrumentedList 实例。我可以破解它并获取 InstrumentedList 中第一个实例的类,但如果 InstrumentedList 中没有对象,这将不起作用。

原因:我需要将包含映射器类 X 的属性的 Python 字典附加到 InstrumentedList,但我不知道运行时的映射器类。由于我无法附加字典,因此我需要获取映射器类。

谢谢。

最佳答案

关系通过 property 与检测列表相关联。所以从这个普通的 Vanilla 映射开始:

from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class A(Base):
__tablename__ = "a"
id = Column(Integer, primary_key=True)
bs = relationship("B")

class B(Base):
__tablename__ = "b"
id = Column(Integer, primary_key=True)
a_id = Column(Integer, ForeignKey('a.id'))

在任何最新版本的 SQLAlchemy 中,您都可以这样看到它:

print A.bs.property.mapper.class_

在 0.8 中有更多的 API 可用,你可以这样做:

from sqlalchemy import inspect
print inspect(A.bs).mapper.class_

检查文档-> http://docs.sqlalchemy.org/en/rel_0_8/core/inspection.html

“mapper->class_”的文档 -> http://docs.sqlalchemy.org/en/rel_0_8/orm/mapper_config.html#sqlalchemy.orm.mapper.Mapper.class_

关于Python+SQL炼金术 : Getting mapper class from InstrumentedList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15347288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com