如何检查查询是否找到任何结果?
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))
答案 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