You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cx_Oracle操作MariaDB执行UPDATE语句报字符串格式化参数不匹配错误

问题根因与解决方案

1. 核心错误:数据库驱动不匹配

cx_Oracle是仅用于Oracle数据库连接的专属驱动,不支持MariaDB/MySQL的语法解析与交互,这是报错的核心原因。该驱动无法识别:1格式的占位符,会将其当做普通字符串处理,参数传入后无法完成格式化匹配,直接抛出你遇到的类型错误。
连接MariaDB请更换为mysql-connector-python(官方驱动)或pymysql(轻量驱动)。

2. 绑定变量语法不兼容

Oracle的位置绑定变量使用:1、:2格式,而MariaDB/MySQL的位置占位符统一使用%s,你的SQL语句占位符规则不符合当前连接的数据库要求。

3. 其他写法错误

commit是数据库连接对象的方法,不是游标对象的方法,你写的cursor.commit()是无效写法,需要修改为连接实例.commit()。


可运行的修正代码

第一步先安装对应驱动:

pip install mysql-connector-python

第二步修改代码逻辑:

import mysql.connector

# 替换为你自己的数据库连接参数
conn = mysql.connector.connect(
    host="127.0.0.1",
    user="数据库用户名",
    password="数据库密码",
    database="对应的库名"
)
cursor = conn.cursor()

values = ['logfile', 'report_file', 'subfolder', 'FAILED']
# 占位符统一替换为%s
query = "UPDATE temp SET file_logging=%s, file_report=%s, submission_subfolder=%s, status=%s where id = 1"

cursor.execute(query, values)
# 使用连接对象执行commit
conn.commit()

# 用完关闭资源
cursor.close()
conn.close()

内容的提问来源于stack exchange,提问作者CodingCat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:24:06