Python 使用SqlAlchemy通过主键列表从DB加载多个实例
如果我有一个复合主键列表,是否有一种优雅的方法可以使用SqlAlchemy从数据库加载许多实体 可以使用Query.get*主键加载一个对象。 一份清单怎么样?例如: 主键=[ {type:user,id:1}, {type:user,id:2}, {type:user,id:3}, ] 实例=ssn.querymodels.Object。。。? 只需迭代inspectmodels.Object.primary_键并手动构建条件:Python 使用SqlAlchemy通过主键列表从DB加载多个实例,python,sqlalchemy,primary-key,Python,Sqlalchemy,Primary Key,如果我有一个复合主键列表,是否有一种优雅的方法可以使用SqlAlchemy从数据库加载许多实体 可以使用Query.get*主键加载一个对象。 一份清单怎么样?例如: 主键=[ {type:user,id:1}, {type:user,id:2}, {type:user,id:3}, ] 实例=ssn.querymodels.Object。。。? 只需迭代inspectmodels.Object.primary_键并手动构建条件: from sqlalchemy import or_, and_
from sqlalchemy import or_, and_, inspect
instances = ssn.query(models.Object).filter(or_( # or_()ed together
# and_()ed condition on all PK fields
and_(*(
# column == value
column == pk_dict[column.key]
for column in inspect(models.Object).primary_key # list of PK columns
))
for pk_dict in primary_keys
))
@vdmit11使用SQL元组的更优雅的解决方案: 从sqlalchemy导入检查,元组_ 主键的列对象列表 pk_columns=inspectmodels.Object.primary_键 pk_名称=[pk_列中的列的列键] 在…中生成条件:主键元组。。。。 条件=tuple_*pk_columns.in_ 每个对象都由其主键元组表示 pk_名称中pk_字段的tupleentity_dict[pk_字段] 对于主键中的实体\u dict 实例=ssn.querymodels.Object.filtercondition.all 它将生成一个如下所示的查询: 选择* 来自用户 其中uid,登录1'vdmit11',2'kolypto';