cx_Oracle: "not all arguments converted during string formatting"

cx_Oracle: "not all arguments converted during string formatting"

我正在尝试通过 cx_oracle 将更新查询传递给 MariaDB table。 (Python3)

而且我不断收到“TypeError:并非所有参数都在字符串格式化期间转换”。

说,这是我的 table:

CREATE TABLE `temp` (
  `id` INT NOT NULL,
  `file_logging` VARCHAR(45) NULL,
  `file_report` VARCHAR(45) NULL,
  `submission_subfolder` VARCHAR(45) NULL,
  `status` VARCHAR(10) NULL,
  PRIMARY KEY (`id`));

这是我正在尝试的 Python 代码 运行:

values = ['logfile', 'report_file', 'subfolder', 'FAILED']
query = "UPDATE temp SET file_logging=:1, file_report=:2, submission_subfolder=:3, status=:4 where id = 1"

cursor.execute(query, values)
cursor.commit()

我已经为位置绑定定义了 4 个位置,并且正在传递一个包含 4 个值的列表。

我做错了什么?

感谢@christopher-jones 的指点,我解决了问题。 (我本来以为问题出在查询上,所以发问题之前没有深究。)

我正在使用一个(内部编写的)中间件库,我认为它使用 cx_Oracle 进行所有数据库处理,但对于 MariaDB 情况,它使用 pymysql 代替(这当然是有道理的)。

显然,pymysql 不像 cx_Oracle 那样进行位置绑定,而是使用 %s 占位符。

所以我将查询更改为:

query = "UPDATE temp SET file_logging=%s, file_report=%s, submission_subfolder=%s, status=%s where id = 1"

现在可以使用了。