在我需要查看名稱是否在數據庫中的項目上工作。[Python] [sqlite3]如果語句看到值是否在數據庫中?
我想知道如果我可以,如果類似的語句 東西做的:
if name in c.execute("SELECT name FROM table"):
print "Name is in table"
else:
print "Name not in table"
這可能嗎?
更多代碼可根據要求提供!
在我需要查看名稱是否在數據庫中的項目上工作。[Python] [sqlite3]如果語句看到值是否在數據庫中?
我想知道如果我可以,如果類似的語句 東西做的:
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代碼中的FLOP出現,這些代碼可能會更好地用於其他事情。
你可以試試這個 -
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
後,必須獲取結果。結果是元組列表,其中元組元素是列值,列表元素是不同的行
你確定這會工作嗎?在我看來,這可能只能從表格中取出一行,不是嗎? –
是的。我的錯。更改代碼以獲取所有行,然後檢查是否存在 – kuro
(從技術上講,如果它是sqlite3,它可能不是網絡帶寬...) –
@AlexL刪除單詞'network'你的評論。 –
@TimBiegeleisen 謝謝! Works gr8:D – Dug