python - python3 mysql连接器模块抛出异常-ValueError:无法处理参数
问题描述
我正在努力克服困扰我的这个错误。我构建了一个简单的脚本来填充单列数据库。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE IF NOT EXISTS data(pass_word VARCHAR(20))")
val = 'test'
sql = "INSERT INTO data(pass_word) VALUES '%s'"
mycursor.execute(sql, (val))
mydb.commit()
它创建表没有问题,所以我知道连接器正在工作。但它拒绝将 val 插入 pass_word。
它抛出以下异常
Press ENTER or type command to continue
Traceback (most recent call last):
File "sql-try.py", line 19, in <module>
mycursor.execute(sql, (val))
File "/usr/local/lib/python3.6/dist-packages/mysql/connector/cursor_cext.py", line 248, in execute
prepared = self._cnx.prepare_for_mysql(params)
File "/usr/local/lib/python3.6/dist-packages/mysql/connector/connection_cext.py", line 538, in prepare_for_mysql
raise ValueError("Could not process parameters")
ValueError: Could not process parameters
解决方案
我认为问题在于我的表只有一列,所以当我传递 val 时,val 本身需要是一个元组。将其更改为 (sql, (val,)) 并没有解决问题。当我创建一个包含多列的表时,问题就消失了。
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password",
database="mydatabase"
)
mycursor = mydb.cursor()
myname = 'jimmy'
password = 'grizwald'
mycursor.execute("CREATE TABLE IF NOT EXISTS data3(my_name VARCHAR(20), pass_word VARCHAR(20))")
val = (myname, password )
sql = "INSERT INTO data3(my_name, pass_word) VALUES (%s, %s)"
mycursor.execute(sql, val)
mydb.commit()
推荐阅读
- xml - Talend - tXMLMap 到 tUnite 到雪花表
- nginx - Nginx 证书有效但记录捕获的错误
- python - 如何使用 PyTorch 模型进行预测?
- visual-studio-code - 为 c/c++ 括号自动完成配置 vscode
- node.js - ReactJS 上传文件到 Express 后端 undefined
- javascript - 函数中的Vue返回模板
- web3js - 什么是币安网络套接字连接 URL?
- c++ - 静态链接库
- ios - 使用 Objective-C 块作为 @synchronized 锁
- html - 如何制作循环之间没有空格/间隙的 CSS 滚动部分循环?