Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLAlchemy-不使用会话将ResultProxy映射到映射类_Sqlalchemy - Fatal编程技术网

SQLAlchemy-不使用会话将ResultProxy映射到映射类

SQLAlchemy-不使用会话将ResultProxy映射到映射类,sqlalchemy,Sqlalchemy,我非常希望在通过会话进行查询时避免状态绑定到实体,并利用类映射而不依赖于: session.query(SomeClass) 我不需要事务、即时/延迟加载、更改跟踪或提供的任何其他功能。本质上,我希望手动将ResultProxy绑定到映射类,并拥有一个实例列表,这些实例没有任何对SQLA的引用,比如state 我尝试了Query.instances,但它需要一个会话实例: engine = create_engine('sqlite:///:memory:') meta = MetaData(

我非常希望在通过会话进行查询时避免状态绑定到实体,并利用类映射而不依赖于:

session.query(SomeClass)
我不需要事务、即时/延迟加载、更改跟踪或提供的任何其他功能。本质上,我希望手动将ResultProxy绑定到映射类,并拥有一个实例列表,这些实例没有任何对SQLA的引用,比如state

我尝试了Query.instances,但它需要一个会话实例:

engine = create_engine('sqlite:///:memory:')
meta = MetaData()
meta.bind = engine
table = Table('table, meta,
    Column('id', Integer, primary_key=True),
    Column('field1', String(16), nullable=False),
    Column('field2', String(60)),
    Column('field3', String(20), nullable=False)
)

class Table(object)
    pass

meta.create_all(checkfirst=True)
for i in range(10):
    user.insert({'field1': 'field1'+i,'field2': 'field2'+i*2,'field3': 'field3'+i*4})
mapper(Table, table)
query = Query((Table,))
query.instances(engine.text("SELECT * FROM table").execute())
结果:

Traceback (most recent call last):
    File "sqlalchemy/orm/mapper.py", line 2507, in _instance_processor
        session_identity_map = context.session.identity_map
    AttributeError: 'NoneType' object has no attribute 'identity_map'
我被困在这一点上了。我已经浏览了Query.instances,手动设置复制会话似乎非常广泛。它需要查询、查询上下文、地图和精心编排,这会让大多数芭蕾舞团脸红


tl;dr希望使用SQLAlchemy的查询生成任何返回ResultProxy实例并将结果映射到各自类的内容,同时跳过与会话、标识映射和工作单元相关的内容。

您可以删除该对象,这样它就不会维护会话,但它仍然具有\u sa属性


看到您已经有一段时间没有提出请求了,它可能不会为您服务,但可能对其他人来说,您可以删除该对象,因此它不会维护会话,但它仍然具有_sa属性

既然你已经有一段时间没问了,它可能不会为你服务,但可能会为其他人服务