首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python+SQLAlchemy:从InstrumentedList获取映射器类?

Python+SQLAlchemy:从InstrumentedList获取映射器类?
EN

Stack Overflow用户
提问于 2013-03-12 03:48:11
回答 1查看 2.3K关注 0票数 2

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

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

原因:我需要将包含映射器类X的属性的Python字典附加到InstrumentedList,但我不知道运行时的映射器类。因为我不能附加字典,所以我需要获取mapper类。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-12 10:26:41

该关系通过property与插入指令的列表相关联。因此,从这个普通的映射开始:

代码语言:javascript
运行
复制
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中,您都可以看到如下所示:

代码语言:javascript
运行
复制
print A.bs.property.mapper.class_

在0.8中,提供了更多的API,您可以这样做:

代码语言:javascript
运行
复制
from sqlalchemy import inspect
print inspect(A.bs).mapper.class_

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15347288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档