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"
现在可以使用了。
我正在尝试通过 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"
现在可以使用了。