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

时间:2017-04-06 05:27:22

标签: python sqlite

处理我需要查看名称是否在数据库中的项目。

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

if name in c.execute("SELECT name FROM table"):
    print "Name is in table"
else:
    print "Name not in table"

这可能吗?
可根据要求提供更多代码!

2 个答案:

答案 0 :(得分:3)

我认为你应该在这里使用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代码中的FLOP,这可能更好地用于其他事情。

答案 1 :(得分:0)

你可以试试这个 -

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

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

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