在 MySQL 中从 Django 调用 DATE_FORMAT() 失败

标签: Django MySQL
发布时间: 2015/6/11 22:53:38
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我可以运行 SET 语句将变量分配并使用"交易"来维护它在 mySQL 会话中,但当我包括函数 DATE_FORMAT 像这样:

cursor.execute("SET @dowToday:=CAST( DATE_FORMAT( NOW(), '%w' ) AS UNSIGNED);")

Django 抱怨

没有足够的参数用于在 /usr/lib/pymodules/python2.6/MySQLdb/cursors.py 中的格式字符串执行的线 151

它不会帮助删除强制转换,玩或转义引号。

想法吗?

解决方法 1:

在我以前的答案遗漏点。这是 Django 的游标。不"标准 Python"之一。

根据文档:

https://docs.djangoproject.com/en/dev/topics/db/sql/

请注意,如果你想要在查询中包括字面百分号,你有双他们在情况下你是传递参数:

cursor.execute("SELECT foo FROM bar WHERE baz = '30%%' and id = %s", [self.id])

我认为如果这个行不通了,你可以回退到一些愚蠢的简单诀窍:

cursor.execute("SET @dowToday:=CAST( DATE_FORMAT( NOW(), '%sw' ) AS UNSIGNED);", ['%'])

%s将被取代 % 作为参数传递......

官方微信
官方QQ群
31647020