Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
[Python][sqlite3]If语句来查看值是否在数据库中?_Python_Sqlite - Fatal编程技术网

[Python][sqlite3]If语句来查看值是否在数据库中?

[Python][sqlite3]If语句来查看值是否在数据库中?,python,sqlite,Python,Sqlite,在一个项目中,我需要查看数据库中是否有名称 我想知道我是否能做一个if语句 类似于: if name in c.execute("SELECT name FROM table"): print "Name is in table" else: print "Name not in table" 这可能吗? 更多代码可根据要求提供 我认为您应该在此处使用EXISTS来确定是否存在匹配的记录: c.execute("SELECT EXISTS(SELECT 1 FROM table

在一个项目中,我需要查看数据库中是否有名称

我想知道我是否能做一个if语句 类似于:

if name in c.execute("SELECT name FROM table"):
    print "Name is in table"
else:
    print "Name not in table"
这可能吗? 更多代码可根据要求提供

我认为您应该在此处使用EXISTS来确定是否存在匹配的记录:

c.execute("SELECT EXISTS(SELECT 1 FROM table WHERE name=? LIMIT 1)", (name,))
record = c.fetchone()
if record[0] == 1:
    print "Name is in the table"
else:
    print "Name not in table"
这种方法的好处是允许SQLite数据库执行确定我们的名称是否与任何记录匹配的繁重任务。在您的方法中,将返回表中的每个名称,然后在Python中检查这些名称。这不是最优的,因为它会浪费带宽,还会在Python代码中失败,这本可以更好地用在做其他事情上。

您可以试试这个-

c.execute("SELECT name FROM table")
rows = c.fetchall()

if (name,) in rows:
    print "Name is in table"
else:
    print "Name not in table"

执行后,您必须获取结果。结果是一个元组列表,其中元组元素是列值,列表元素是不同的行

从技术上讲,如果是sqlite3,可能不是网络带宽…@AlexL根据您的评论删除了“网络”一词。@TimBiegeleisen谢谢!gr8:你敢肯定这会奏效吗?在我看来,这可能只会从表中取出一行,不是吗?是的。我的错。更改代码以获取所有行,然后检查是否存在