Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python将当前日期写入Postgres?_Python_Postgresql - Fatal编程技术网

如何使用Python将当前日期写入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,

我无法将日期写入类型为“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, 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())