带有mysql查询插入的Python - 单个参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有mysql查询插入的Python - 单个参数相关的知识,希望对你有一定的参考价值。
以下是无效的代码
#!/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(PRIMARY INT AUTO_INCREMENT)
- 价格(FLOAT)
没有连接问题。
它给出以下错误。任何的想法?
回溯(最近一次调用最后一次):文件“./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)
- 接下来尝试在bash或phpMyAdmin中手动执行打印查询并修复它。
- 最后在你的python代码中使用固定查询。
以上是关于带有mysql查询插入的Python - 单个参数的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在单个查询中将 x 个默认值插入到空 SQLite 表中?
MySQL ON DUPLICATE KEY UPDATE 在单个查询中插入多行