在我的代码中,当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]
答案 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.