首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django cursor.executemany参数

Django cursor.executemany参数
EN

Stack Overflow用户
提问于 2016-05-03 17:54:10
回答 1查看 4.2K关注 0票数 3

我现在正在使用Django cursor.execuremany一段时间,我想做一些引导。

在这个堆栈溢出页面上,我读到使用字符串格式化操作符和使用问号是个坏主意。如何在Python中使用SQL语句中的变量?

然而,当我在我的程序中使用它时,我会得到一个错误:

代码语言:javascript
复制
TypeError: not all arguments converted during string formatting

这就是我写的代码:

代码语言:javascript
复制
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时给了我一个错误。

代码语言:javascript
复制
<expression> expedted, got %

这不是主要问题,但我不确定这是否能产生影响。

我用的是什么

  • Python 2.7
  • Django 1.4
  • MySql
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-03 17:55:23

当我只换了那个?对于%s,它按预期工作。

?占位符仅用于SQLite

?作为占位符放在任何您想使用值的位置,然后提供一个值元组作为游标的execute()方法的第二个参数。(其他数据库模块可能使用不同的占位符,如%s:1。)

MySQL驱动程序期望将%s视为查询参数占位符:

代码语言:javascript
复制
query = "REPLACE INTO names (id, name) VALUES (%s, %s)"
cursor.executemany(query, values)

另一件事(让我开始搜索)是,PyCharm在使用%s时给了我一个错误。

PyCharm不会在我的终端发出任何警告。你可能做了一些不同的事情:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37011086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档