我正在尝试使用python从mysql表中检索数据,但一直收到错误。请参阅下面的我的尝试和数据:
import MySQLdb
# connect
db = MySQLdb.connect(host="localhost", user="root", passwd="xxxxxxx", db="world")
cursor = db.cursor()
t=['red', 'yellow']
for x in t:
cursor.execute("select * from mytable where colours=%s," [x])
我收到以下错误:TypeError: string indices must be integers, not str
我学习了Mysql将数据存储为元组,因此我需要将%s更改为元组但不知道如何。
有什么建议吗?感谢。
答案 0 :(得分:2)
尝试此操作并检查这是否可以解决您的问题
import MySQLdb
# connect
db = MySQLdb.connect(host="localhost", user="root", passwd="xxxxxxx", db="world")
cursor = db.cursor()
t=['red', 'yellow']
for x in t:
cursor.execute("select * from mytable where colours=%s" % repr(x))
请注意,此处Sql Query
将构建为
select * from mytable where colours='red' #which is actual and correct query
虽然我还没有测试过,但可能有其他方法可以做到这一点。 OP问题的实际问题是它构建Sql Query
之类的
select * from mytable where colours=red # Check the missing quotation around text red
答案 1 :(得分:0)
您希望迭代t
中的元素。因此,您不需要[]
周围的x
:
import MySQLdb
# connect
db = MySQLdb.connect(host="localhost", user="root", passwd="xxxxxxx", db="world")
cursor = db.cursor()
t=['red', 'yellow']
for x in t:
cursor.execute("select * from mytable where colours=%s", x)