使用current_date时psycopg2出现NotSupportedError错误

0 投票
1 回答
1797 浏览
提问于 2025-04-17 07:19

我在用psycopg2访问一个postgresql 8.4的数据库时,执行更新查询时遇到了一个异常:

  File "/home/alf/cubicweb/cubicweb/server/sources/native.py", line 744, in doexec
    cursor.execute(str(query), args)
NotSupportedError: ERREUR:  la valeur « current » pour la date et heure n'est plus supportée
LINE 1: UPDATE cw_ImportLog SET cw_import_date=E'CURRENT_DATE'

错误信息是本地化的,但翻译过来是“日期和时间的值'current'不再被支持”。

让我困惑的是,错误信息的其他部分明确提到是使用了CURRENT_DATE,而不是CURRENT。我可以通过在查询中用today替代CURRENT_DATE来“修复”这个异常,但我想搞明白到底发生了什么。这是psycopg2的一个bug吗?

1 个回答

2

你把字符串 'CURRENT_DATE' 传给了一个日期列。很可能在把这个字符串解析成日期时,它会把下划线(_)当作一个有效的分隔符。

你真正想要的是 CURRENT_DATE 而不是 'CURRENT_DATE'

所以你可以试试这个:

UPDATE cw_ImportLog SET cw_import_date = current_date;

补充说明: 如果你必须传一个字符串,可以用 now,这个是有效的。关于这个内容,可以查看文档中第 9.9.4节 的最后部分。

撰写回答