下面是不起作用的代码
#!/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有相应的表和列。
- id (主要国际AUTO_INCREMENT(
- 价格(浮动(
没有连接问题。
它给出以下错误。知道吗?
回溯(最近一次调用(:文件"./sys-fetchdata.py",行 22, 在 cursor.execute(query, (data['price'](( File "/usr/lib/python2.7/dist-packages/mysql/connector/cursor.py", line 507,执行中 self._handle_result(self._connection.cmd_query(stmt(( File "/usr/lib/python2.7/dist-packages/mysql/connector/connection.py", line 722,在cmd_query result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query(( 文件 "/usr/lib/python2.7/dist-packages/mysql/connector/connection.py", line 640,_handle_result 引发errors.get_exception(packet( mysql.connector.errors.ProgrammingError: 1064 (42000(: 您有一个 您的 SQL 语法错误;检查与您的手册相对应的手册 MySQL 服务器版本,用于在第 1 行的"%s("附近使用的正确语法
MySQLCursor.execute()
方法将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)
-
接下来尝试在bash或phpMyAdmin中手动执行打印的查询并修复它。
- 最后在你的 python 代码中使用固定查询。