作者:天秤羊子_140 | 来源:互联网 | 2022-12-16 09:11
我想使用准备好的语句使用python将数据插入MySQL DB(版本5.7),但是我一直收到NotImplementedError。我在这里关注文档:https : //dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursorprepared.html
使用python-2.7和mysql-connector-python库的8.0.11版本:
pip show mysql-connector-python
---
Metadata-Version: 2.1
Name: mysql-connector-python
Version: 8.0.11
Summary: MySQL driver written in Python
Home-page: http://dev.mysql.com/doc/connector-python/en/index.html
这是我正在运行的python脚本的清理后的版本(没有特定的主机名,用户名,密码,列或表):
import mysql.connector
from mysql.connector.cursor import MySQLCursorPrepared
cOnnection= mysql.connector.connect(user=username, password=password,
host='sql_server_host',
database='dbname')
print('Connected! getting cursor')
cursor = connection.cursor(cursor_class=MySQLCursorPrepared)
select = "SELECT * FROM table_name WHERE column1 = ?"
param = 'param1'
print('Executing statement')
cursor.execute(select, (param,))
rows = cursor.fetchall()
for row in rows:
value = row.column1
print('value: '+ value)
运行此命令时出现此错误:
Traceback (most recent call last):
File "test.py", line 18, in
cursor.execute(select, (param,))
File "/home/user/.local/lib/python2.7/site-packages/mysql/connector/cursor.py", line 1186, in execute
self._prepared = self._connection.cmd_stmt_prepare(operation)
File "/home/user/.local/lib/python2.7/site-packages/mysql/connector/abstracts.py", line 969, in cmd_stmt_prepare
raise NotImplementedError
NotImplementedError
Rob Bricheno..
8
如果有CEXT ,默认情况下将启用CEXT,并且在编写本文时,CEXT不支持预准备语句。
通过添加关键字参数use_pure=True
,可以在连接时禁用CEXT ,如下所示:
cOnnection= mysql.connector.connect(user=username, password=password,
host='sql_server_host',
database='dbname',
use_pure=True)
在即将发布的mysql-connector-python
8.0.17版本中(根据MySQL错误报告),将包括对CEXT中准备好的语句的支持。因此,一旦可用,则至少升级到8.0.17即可解决此问题use_pure=True
。
1> Rob Bricheno..:
如果有CEXT ,默认情况下将启用CEXT,并且在编写本文时,CEXT不支持预准备语句。
通过添加关键字参数use_pure=True
,可以在连接时禁用CEXT ,如下所示:
cOnnection= mysql.connector.connect(user=username, password=password,
host='sql_server_host',
database='dbname',
use_pure=True)
在即将发布的mysql-connector-python
8.0.17版本中(根据MySQL错误报告),将包括对CEXT中准备好的语句的支持。因此,一旦可用,则至少升级到8.0.17即可解决此问题use_pure=True
。
谢谢!真是个晦涩的东西。他们确实应该在准备好的语句页面的文档中提及它。