我是python的新手,我有一个我无法解决的简单问题。 我在Windows平台,不幸的是我不能改变这个工作原因。我必须连接到许多mysql表,并使用提取的数据做一些事情。我有的代码:
conn = mysql.connector.Connect(host='<ip>',user='<user>',\
password='',database='<my database>')
c = conn.cursor()
c.execute ("select field from TABLE")
results = c.fetchall()
for row in results:
c.execute("select * from otherTable where nodo = %s",(str(row[0])))
if c.rowcount == 0:
doSomething()
else:
doOtherThing()
c.close()
当我使用Python34运行时,我收到错误:
&#34;你的sql synthax有错误;检查与你的mysql服务器版本相对应的手册,以便合适的合成器使用在&#39;%s&#39;附近。在第1行
感谢
答案 0 :(得分:0)
你需要在%s周围加上单引号:c.execute("select * from otherTable where nodo = '%s'",(str(row[0])))
您还应该考虑将查询放在变量中,然后执行它:
query = ("select * from otherTable where nodo = '%s'",(str(row[0])))
c.execute(query)
这种方式有助于防止潜在的SQL注入攻击并允许您执行print(query)
,以便在出现错误时调试sql语句。