Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/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 一次查询多个值_Sqlalchemy - Fatal编程技术网

Sqlalchemy 一次查询多个值

Sqlalchemy 一次查询多个值,sqlalchemy,Sqlalchemy,在SQL中,我可以得到如下一组行: q = meta.Session.query(cls) q = q.filter(cls.id.in_([2,3,5,7,11])) return q.all() 从id位于(2,3,5,7,11)中的表中选择*; 等效的sqlalchemy查询看起来如何cls.id计算结果为False,因此此代码: q=meta.Session.query(cls) q=q.filter(cls.id在[2,3,5,7,11]中) 返回q.all() 出现异常时失败:

在SQL中,我可以得到如下一组行:

q = meta.Session.query(cls)
q = q.filter(cls.id.in_([2,3,5,7,11]))
return q.all()
从id位于(2,3,5,7,11)中的表中选择*;
等效的sqlalchemy查询看起来如何<[2,3,5,7,11]中的code>cls.id计算结果为
False
,因此此代码:

q=meta.Session.query(cls)
q=q.filter(cls.id在[2,3,5,7,11]中)
返回q.all()
出现异常时失败:

  File "foo.py", line 1234, in findall_by_ids
    q = q.filter(cls.id in [2,3,5,7,11])
  File "<string>", line 1, in <lambda>
  File "/eggs/sqlalchemy/orm/query.py", line 50, in generate
    fn(self, *args[1:], **kw)
  File "/eggs/sqlalchemy/orm/query.py", line 1177, in filter
    "filter() argument must be of type "
ArgumentError: filter() argument must be of type sqlalchemy.sql.ClauseElement
               or string
文件“foo.py”,第1234行,findall_by_id
q=q.filter(cls.id在[2,3,5,7,11]中)
文件“”,第1行,在
文件“/eggs/sqlalchemy/orm/query.py”,第50行,生成
fn(自,*参数[1:],**千瓦)
文件“/eggs/sqlalchemy/orm/query.py”,第1177行,在过滤器中
“filter()参数的类型必须为”
ArgumentError:filter()参数的类型必须为sqlalchemy.sql.ClauseeElement
或字符串
使用,如下所示:

q = meta.Session.query(cls)
q = q.filter(cls.id.in_([2,3,5,7,11]))
return q.all()
使用

你的翻译说:

ArgumentError: filter() argument must be of type sqlalchemy.sql.ClauseElement
               or string

这些运算符已被覆盖,将返回筛选器需要的内容,您可以查看
sqlalchemy.sql.operators
。[2,3,5,7,1]中的
cls.id不起作用的原因是因为它是[2,3,5,7,1]的运算符,它将返回
True
False

如果您不知道PK列,最好的解决方案是使用
get
,但它只用于一行

对于非复合PK

pk = model.__mapper__.primary_key[0]
items = model.query.filter(pk.in_(ids)).all()