我可以跑SET
语句分配变量并使用“事务”在 mySQL 会话中维护它,但是当我包含该函数时DATE_FORMAT
像这样:
cursor.execute("SET @dowToday:=CAST( DATE_FORMAT( NOW(), '%w' ) AS UNSIGNED);")
姜戈抱怨说
执行中 /usr/lib/pymodules/python2.6/MySQLdb/cursors.py 中的格式字符串参数不足,第 151 行
删除 CAST 或使用或转义引号并没有帮助。
想法?
我的猜测是问题出在百分号(%
)在查询文本中。 (这不是 Django 中的绑定变量占位符吗?)如果我们要使用绑定变量,那不是看起来像这样吗?
SELECT 'foo' FROM DUAL WHERE 'a' = %(varname)s ;
我想也许 Django 正在扫描你的 SQL 文本并遇到%w
并期望它是一个绑定变量。要么是这样,要么它正在运行sprintf
风格函数,并遇到%w
并期望用参数值替换该占位符。
(我没有测试过;所以这只是一个想法,只是一个猜测。)
作为对解决方法的猜测,也许您将百分号加倍,就像我们通过 sprintf 获得 % 文字一样:
query("SELECT ... ,'%%w') ...");
如果这不起作用,那么可能是反斜杠字符,就像我们在正则表达式中转义字符一样:
query("SELECT ... ,'\%w') ...");
(或者,您可能需要将反斜杠加倍。这些只是基于其他软件使用的约定的猜测。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)