从mysql中检索相等的值

时间:2014-12-25 19:53:40

标签: python mysql

在我的代码中,当raw_input相等时,它必须打印相应的单个值,但在这里我得到两个值。

如果我输入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]

2 个答案:

答案 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语句执行一次,而不再执行。

答案 1 :(得分:0)

这似乎与缩进有关。你的if条件应该在你的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.