如何使用Python将当前日期写入Postgres?
我无法将日期写入类型为“date”的Postgres列 我使用以下代码:如何使用Python将当前日期写入Postgres?,python,postgresql,Python,Postgresql,我无法将日期写入类型为“date”的Postgres列 我使用以下代码: import datetime import pytz now = datetime.datetime.now(pytz.timezone("Europe/Moscow")) sql = "INSERT INTO questions (date) VALUES (%s, %s)" \ % (datetime.date(now.year,
import datetime
import pytz
now = datetime.datetime.now(pytz.timezone("Europe/Moscow"))
sql = "INSERT INTO questions (date) VALUES (%s, %s)" \
% (datetime.date(now.year, now.month, now.day))
cursor.execute(sql)
此外,我尝试了以下方法:
sql = "INSERT INTO questions (date) VALUES (%s, %s)" \
% (datetime.datetime.now())
cursor.execute(sql)
但我有同样的错误:
psycopg2.errors.DatatypeMismatch: ╬╪╚┴╩└: ёЄюысхЎ "date" шьххЄ Єшя date, р т√Ёрцхэшх - integer
LINE 1: INSERT INTO questions (id, date) VALUES (10, 2020-12-04)
^
HINT: ╧хЁхяш°шЄх т√Ёрцхэшх шыш яЁхюсЁрчєщЄх хую Єшя.
您能帮我一下吗?有什么问题吗?
日期
类型实际上是字符串的自定义类型。所以日期值应该是字符串
试试这个(它添加了2个“
字符):
注意:也请查看保罗的评论 不要将值插入sql字符串中。(有很好的理由不这样做;谷歌sql注入…)试试:cursor.execute(sql,(datetime.datetime.now(),(datetime.datetime.now())请查看文档。正如paul所说,除非您了解引用变量的所有规则,否则不应使用字符串格式/插值来创建SQL查询。postgres可能认为2020-12-04
是一个算术表达式。您是最棒的!!!请参阅答案中关于不将值直接插入变量的注释SQL字符串。这可能是一个非常严重的安全漏洞。
sql = "INSERT INTO questions (id, date) VALUES (%s, '%s')" % (datetime.datetime.now())