gpt4 book ai didi

mysql - 从 Django 调用 MySQL 中的 DATE_FORMAT() 失败

转载 作者:行者123 更新时间:2023-11-29 00:27:50 28 4
gpt4 key购买 nike

我可以运行 SET 语句来分配变量并使用“事务”在 mySQL session 中维护它,但是当我像这样包含函数 DATE_FORMAT 时:

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

Django 提示说

not enough arguments for format string in /usr/lib/pymodules/python2.6/MySQLdb/cursors.py in execute, line 151

删除 CAST 或使用或转义引号都无济于事。

想法?

最佳答案

我的猜测是问题出在查询文本中的百分号 (%) 上。 (这不是 Django 中的绑定(bind)变量占位符吗?)例如如果我们要使用一个绑定(bind)变量,那不是像这样吗?

SELECT 'foo' FROM DUAL WHERE 'a' = %(varname)s ;

我认为 Django 可能正在扫描您的 SQL 文本并遇到 %w 并期望它是一个绑定(bind)变量。要么,要么它正在运行 sprintf 样式的函数,遇到 %w 并期望用参数值替换该占位符。

(我没有测试过;所以这只是一个想法,只是一个猜测。)

作为一种变通方法的猜测,也许你将百分号加倍,就像我们通过 sprintf 获得 % 文字一样:

  query("SELECT ... ,'%%w') ...");

如果这不起作用,那么可能是反斜杠字符,就像我们在正则表达式中转义字符一样:

  query("SELECT ... ,'\%w') ...");

(或者,您可能需要加倍反斜杠。这些只是基于其他软件使用的约定的猜测。)

关于mysql - 从 Django 调用 MySQL 中的 DATE_FORMAT() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18136629/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com