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

时间:2018-07-08 00:31:10

标签: sqlalchemy flask-sqlalchemy

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

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

尝试过:

if result is None:
    print("reuslt is None!")

并检查长度:

print("result len", len(result))

6 个答案:

答案 0 :(得分:6)

position对于某些数据库而言可能相当慢,all()更好,但是对于大型数据库和复杂查询,count()甚至更快。例如:

first()

答案 1 :(得分:1)

行计数对我有用,是一种检查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')

答案 2 :(得分:0)

len 是更好的方法。您在附近:

print("result len", len(result.all()))

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

如果您想知道结果,则可以将其与进行比较。

答案 3 :(得分:0)

我能够找到一种方法来做到这一点。

代码如下:

blogs = Post.query.filter_by(subcategory_id=subcategory, category_id=2)

    if blogs.count() == 0 :
        return redirect(url_for('blogs.travel', subcategory=subcategory))

希望这会有所帮助!

答案 4 :(得分:0)

以下内容对我有用:

flag=0
present=True

for i in result:
    flag=1
    break

if(flag==0)
    present=False #No result found

答案 5 :(得分:0)

我使用了下面的代码并且运行良好。如果 query.first() 元组返回的结果不同于 0,则表示该查询中有内容。

sql = f"SELECT COUNT(user_id) FROM users_table WHERE user_name = '{user_name}'"
query = engine.execute(sql)
if query.first()[0] != 0:
    do_something