Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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 如何使用结果作为表类对象数组获取指定列?_Sqlalchemy - Fatal编程技术网

Sqlalchemy 如何使用结果作为表类对象数组获取指定列?

Sqlalchemy 如何使用结果作为表类对象数组获取指定列?,sqlalchemy,Sqlalchemy,我有一个简单的问题。在我的表中有ID、NAME、CONTENT和TIMESTAMP列。如果我使用session.query(table).all()结果是table类对象的数组。因此,我可以修改一个或多个对象并进行更新,或者在关联中使用这些对象。但我只需要ID和NAME列。如果使用session.query(table.id,table.name),我将得到带有id和name的结果元组。在更新中使用这个元组可能很简单,但代码是。。丑陋的。在社团中也是如此。如果我只想让ID进行关联,那么就没有必要

我有一个简单的问题。在我的表中有ID、NAME、CONTENT和TIMESTAMP列。如果我使用session.query(table).all()结果是table类对象的数组。因此,我可以修改一个或多个对象并进行更新,或者在关联中使用这些对象。但我只需要ID和NAME列。如果使用session.query(table.id,table.name),我将得到带有id和name的结果元组。在更新中使用这个元组可能很简单,但代码是。。丑陋的。在社团中也是如此。如果我只想让ID进行关联,那么就没有必要的数据库负载

到目前为止,我使用简单的代码来获取仅查询指定列的表类对象数组:
session.query(table.id,table.name).all()中的行的

data.append(表(id=row.id,name=row.name))

它使更新变得容易,但在关联中使用是复杂的。例如,我从代码中得到表对象数组中的10行。我想将第1行关联到表2。
如果我使用:
session.add(表2(名称='test',关联=数据[1]))
和commit,
sqlalchemy希望创建新的table2行、新的关联表行和新的表行(这是第一个与table2关联的行)

是否有任何方法可以将结果作为具有指定列的表对象数组(而不是元组)来获取,如果进行查询(表),返回的对象是相同的


很抱歉我的英语,我从来没有用它来描述复杂的问题,直到现在。

如果你想用
.query(Table)
减少从db加载的列数,从而减少开销,你可能想在定义关系时尝试延迟不需要的列。如果说
id
name
是更新所必需的,而
info
不是,您可以告诉映射者推迟
info

mapper(Class, table, properties={
  "info":column_property(table.c.info, deferred=True),
  ... other properties ....
}) 
因此,当您执行
session.query(Class)
时,不会在select上拾取信息。只有在代码中的某个地方有
obj.info
时,即显式调用此属性时,才会调用它