如何过滤掉从数据库返回的结果,以便我只能存储实际返回的数据。
我收到了以下代码:
mergedlist_uniques = [id1,id2,id3,id4,..] #list containing data
for i in range(0, 5):
cur = db.cursor()
cur.execute("SELECT id FROM `id_activities` WHERE `id_activities`.`id` = '" + mergedlist_uniques[i] + "' LIMIT 1")
results = cur.fetchall()
if results != "":
print("empty, result is: ", results)
#data.append(results)
在我的if语句中,我检查结果是否只包含但不起作用。
我仍然得到以下结果:
>>> ('empty, result is: ', ())
我应该期待的是,每当结果是:()它不应该打印任何东西,但如果它包含:
>>> ('empty, result is: ', (idx))
然后它应该打印出结果。
我做错了什么?
答案 0 :(得分:3)
根据Python documentation,None, 0, "", (), {}, []
被视为False
,因此请使用
if results:
#DO something
答案 1 :(得分:0)
我认为使用filter
可以解决您的问题。
mergedlist_uniques = filter(None, [id1,id2,id3,id4,..])
这是filter
如何运作的示例:
v = filter(None, ["foo", "", "bar"])
filter
之后:
v = ['foo', 'bar']
答案 2 :(得分:0)
此外,您可以通过一个SQL查询获得所需的一切:
cur.execute("SELECT id FROM `id_activities` WHERE `id_activities`.`id`"
" in ({})".format(",".join(mergedlist_uniques))