过滤掉查询是否返回任何内容

时间:2015-05-15 13:43:35

标签: python sql

如何过滤掉从数据库返回的结果,以便我只能存储实际返回的数据。

我收到了以下代码:

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))

然后它应该打印出结果。

我做错了什么?

3 个答案:

答案 0 :(得分:3)

根据Python documentationNone, 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))