尝试检查值是否已在MySQL数据库中
我正在写一个脚本,这个脚本每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)
它总是打印出false。
我哪里做错了呢?
我知道我可以对每个fileid运行一个MySQL语句,来查看我是否已经有这个文件,但因为要检查的文件有成千上万,所以我以为这样做会更快。如果我错了,请随时纠正我。
2 个回答
0
你不需要把所有东西都转换成字符串。试试这个:
def new_file(file):
return (file, ) not in file_ids
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"