以下是无效的代码
#!/usr/bin/python
import urllib
import datetime
import mysql.connector
data['price'] = 100
# Write to database
cnx = mysql.connector.connect(user='user', password='pw', database='db')
cursor = cnx.cursor()
query = ("INSERT INTO records(price) VALUES(%s) ")
cursor.execute(query, (data['price']))
cnx.commit()
cursor.close()
cnx.close()
MySQL有相应的表和列。
没有连接问题。
它给出以下错误。任何的想法?
回溯(最近一次调用最后一次):文件“./sys-fetchdata.py”,第22行,在cursor.execute(查询,(data ['price']))文件“/usr/lib/python2.7/dist -packages / mysql / connector / cursor.py“,第507行,执行self._handle_result(self._connection.cmd_query(stmt))文件”/usr/lib/python2.7/dist-packages/mysql/connector/connection .py“,第722行,cmd_query结果= self._handle_result(self._send_cmd(ServerCmd.QUERY,query))文件”/usr/lib/python2.7/dist-packages/mysql/connector/connection.py“,第640行,在_handle_result中引发errors.get_exception(包)mysql.connector.errors.ProgrammingError:1064(42000):你的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在第1行的“%s”附近使用正确的语法
MySQLCursor.execute()
method将tuple
(或dict
)作为第二个(params
)论证。
在你的情况下:它应该是(data['price'], )
(注意额外的逗号;没有它括号没有效果)而不是(data['price'])
。
让我们试着找到一个解决方案:
mogrify
并打印它。例如:
query = ("INSERT INTO records(price) VALUES(%s) ")
query_to_be_executed = cursor.mogrify(query, (data['price']))
print(query_to_be_executed)