2014-12-25 61 views
0

在我的代碼中,當raw_input相等時,它必須打印相應的單個值,但在這裏我得到了這兩個值。從mysql中檢索相同的值

如果鍵入raw_input是自行車,它同時顯示自行車和汽車,而不是僅自行車

請幫幫忙,我只得到一個價值

數據庫:

bike 
car 

編碼:

import MySQLdb 
db = MySQLdb.connect(host="localhost", # your host, usually localhost 
         user="root", # your username 
          passwd="mysql", # your password 
          db="sakila") # name of the data base 
cursor = db.cursor() 

    # execute SQL select statement 
cursor.execute("SELECT A1 FROM adarsh1") 

name = raw_input("What's your name? ") 
keywords1=[] 
for i in cursor.fetchall(): 
    keywords1.append(i[0]) 

    if name in keywords1: 
     print i[0] 

回答

0
for i in cursor.fetchall(): 
    keywords1.append(i[0]) 
    if name == i[0]: 
     print i[0] 
    # Do whatever other things are being done in this loop 

您在發佈的代碼中輸出數據庫值的條件(檢查name是否在keywords1中)會導致print語句在與用戶輸入匹配的數據庫值之後包含性地運行每個數據庫值。從你的問題來看,你只希望print語句執行一次,而不再執行一次。

0

這看起來像是縮進問題。你的條件應該在for循環之外。 (因此,當在for循環中時,IF條件檢查將發生n次,其中n等於表中的行數)。

但爲什麼使這段代碼複雜化。你可以使用你的sql查詢本身輕鬆實現這一點。

name = raw_input("What's your name? ") 
cursor.execute("SELECT A1 FROM adarsh1 where A1 = '%s'"%name) 
cursor.fetchall() # will have your filtered result.