SQLAlchemy - 检查查询是否找到任何结果

el_*_*_le 6 sqlalchemy flask-sqlalchemy

如何检查查询是否找到任何结果?

result = db.engine.execute(sql, id=foo)
// check if result has rows ...
for row in result:
  ...
Run Code Online (Sandbox Code Playgroud)

试过这个:

if result is None:
    print("reuslt is None!")
Run Code Online (Sandbox Code Playgroud)

并检查长度:

print("result len", len(result))
Run Code Online (Sandbox Code Playgroud)

Jel*_*mer 11

all()对于某些数据库可能会很慢,count()但更好,但first()对于大型数据库和复杂查询甚至更快。例如:

x = db.session.query(Post).filter(Post.read==True).first() is not None
Run Code Online (Sandbox Code Playgroud)


小智 6

rowcount对我有用,作为检查 SQLAlchemy 中查询是否为空的简单方法。

  results = db.engine.execute(tbl.select(<YOUR-SELECT-QUERY>))
  num_results = results.rowcount
  if int(num_results) == 0:
      print('NO RESULTS FOUND')
  else:
      print(str(num_results)+' RESULTS FOUND')
Run Code Online (Sandbox Code Playgroud)


Víc*_*pez 3

len是更好的方法。你曾接近:

print("result len", len(result.all()))
Run Code Online (Sandbox Code Playgroud)

如果您没有获取 BaseQuery len 的所有元素,则无法访问该 BaseQuery len。

如果你想知道它是否为空,可以将结果None进行比较。

  • 如果我错了,请纠正我,但这会获取所有记录。如果您只是想查看是否返回“任何”,则操作相当昂贵 (3认同)