首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:将参数传递给原始SQL查询时出现的MySQL语法错误

Django:将参数传递给原始SQL查询时出现的MySQL语法错误
EN

Stack Overflow用户
提问于 2013-12-02 00:32:51
回答 1查看 1.5K关注 0票数 2

我正在尝试执行一个原始SQL查询,如下所示

代码语言:javascript
复制
test = Poll.objects.raw('SELECT * FROM %s', ['polls_poll'])

它导致了一个错误:

代码语言:javascript
复制
ProgrammingError at ...

(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax...

调试工具栏显示Django执行以下SQL查询:

代码语言:javascript
复制
SELECT * FROM 'polls_poll'

如果我在MySQL shell中直接执行这个查询,它也不能工作,除非我用backticks (`)替换单引号(')。

我如何使Django使用回退?或者我做错什么了?

环境: Django 1.6,MySQL 5.6.14,OS 10.9。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-02 00:40:17

我认为您只能传递查询参数,而不能传递字段名,因此它不会适用于表名。

或者,您可以尝试为查询构建简单的字符串:

代码语言:javascript
复制
test_query = 'SELECT * FROM %s' % 'polls_poll'
test = Poll.objects.raw(test_query)

不过,不建议为原始查询设置字符串格式。

更多信息:https://docs.djangoproject.com/en/dev/topics/db/sql/#passing-parameters-into-raw

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

https://stackoverflow.com/questions/20319080

复制
相关文章

相似问题

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