SQLAlchemy从列表中查找表中不存在的ID

时间:2019-09-24 11:27:15

标签: database sqlalchemy

我有一个带有一些记录的表(每个记录都有一个ID-主键)。现在,我需要从指定的列表/集中选择表中不存在的所有ID。我正在使用postgres数据库和sqlalchemy作为ORM。请建议必须执行此类查询。

2 个答案:

答案 0 :(得分:0)

对于很大的集合来说可能并不高效,但是直接进行演示的流程却如此:

my_list = [1, 2, 3, 4, 5]
missing_from_table = []
for id in my_list:
    result = session.query(Model.id).get(id)  # result is a tuple
    if not result:
        missing_from_table.append(id)

print(f'The following ids are not in the table: {missing_from_table}')

另一个选择是:

my_list = [1, 2, 3, 4, 5]
all_ids = [r.id for r in session.query(Model.id).all()]
missing_from_table = [id for id in my_list if id not in all_ids]

答案 1 :(得分:0)

这是一个完全在数据库中运行的选项。它绕过了ORM,但仍然利用SQLAlchemy的便利进行会话和对象映射。

$this->validate($request,[
    'name'=> 'required',
    'matric'=> 'required',
    'phone'=> 'required',
    'email'=>'required',
    'password'=> 'required'
]);