试图检查MySQL DB中是否已有值

时间:2011-10-03 20:02:44

标签: python mysql mysql-python

我正在编写一个脚本,每20分钟运行一次,查找要下载的文件,但我想检查一下我是否已经下载了该文件: 首先我的代码执行此命令:

cursor.execute("SELECT `file_id` FROM `reports`")
file_ids = list(cursor.fetchall())

file_ids是此版本的较长版本:

[('735724',), ('734791',), ('735934',), ('735486',)]

我写了这个函数来检查我是否已经下载了文件:

def new_file(file):
    file = "('%s',)" % (file)
    if (file in file_ids):
        print "true"
    else:
        print "false"   

当我尝试测试该功能时:

file = "735724"
new_file(file)

它始终打印错误。

我做错了什么?

我知道我可以为每个fileid运行一个MySQL语句来查看我是否已经拥有该文件,但由于有数千个文件需要检查,我认为这样做会更快。如果我错了,请随时纠正我。

2 个答案:

答案 0 :(得分:1)

数据库的结果不是字符串,而是元组列表。您可能想要做的是仅使用id构建一个列表,然后检查该数值是否在列表中。例如:

file_ids = [row[0] for row in cursor.fetchall()]
is_in_list = test_id in file_ids
if is_in_list:
    print "true"

答案 1 :(得分:0)

您不需要将所有内容转换为字符串。 尝试:

def new_file(file):
  return (file, ) not in file_ids