2017-04-06 26 views
0

在我需要查看名稱是否在數據庫中的項目上工作。[Python] [sqlite3]如果語句看到值是否在數據庫中?

我想知道如果我可以,如果類似的語句 東西做的:

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

這可能嗎?
更多代碼可根據要求提供!

回答

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出現,這些代碼可能會更好地用於其他事情。

+0

(從技術上講,如果它是sqlite3,它可能不是網絡帶寬...) –

+1

@AlexL刪除單詞'network'你的評論。 –

+0

@TimBiegeleisen 謝謝! Works gr8:D – Dug

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後,必須獲取結果。結果是元組列表,其中元組元素是列值,列表元素是不同的行

+0

你確定這會工作嗎?在我看來,這可能只能從表格中取出一行,不是嗎? –

+0

是的。我的錯。更改代碼以獲取所有行,然後檢查是否存在 – kuro

相關問題