我现在正在使用Django cursor.execuremany一段时间,我想做一些引导。
在这个堆栈溢出页面上,我读到使用字符串格式化操作符和使用问号是个坏主意。如何在Python中使用SQL语句中的变量?
然而,当我在我的程序中使用它时,我会得到一个错误:
TypeError: not all arguments converted during string formatting这就是我写的代码:
from django.db import connection
values = ((1, "john"), (2, "robert"), (3, "angela"))
cursor = connection.cursor()
query = "REPLACE INTO names (id, name) VALUES (?, ?)"
cursor.executemany(query, values)当我只将?替换为%s时,它会像预期的那样工作。
另一件事(让我开始搜索)是,PyCharm在使用%s时给了我一个错误。
<expression> expedted, got %这不是主要问题,但我不确定这是否能产生影响。
我用的是什么
发布于 2016-05-03 17:55:23
当我只换了那个?对于%s,它按预期工作。
?占位符仅用于SQLite:
将
?作为占位符放在任何您想使用值的位置,然后提供一个值元组作为游标的execute()方法的第二个参数。(其他数据库模块可能使用不同的占位符,如%s或:1。)
MySQL驱动程序期望将%s视为查询参数占位符:
query = "REPLACE INTO names (id, name) VALUES (%s, %s)"
cursor.executemany(query, values)另一件事(让我开始搜索)是,PyCharm在使用%s时给了我一个错误。
PyCharm不会在我的终端发出任何警告。你可能做了一些不同的事情:

https://stackoverflow.com/questions/37011086
复制相似问题