2014-12-25 36 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.