我正在编写一个脚本,每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语句来查看我是否已经拥有该文件,但由于有数千个文件需要检查,我认为这样做会更快。如果我错了,请随时纠正我。
答案 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