datetime.datetime(2018,3,8,10,29,49,178285)在python中不能用psycopg2进行JSON序列化

时间:2018-03-08 15:44:42

标签: python postgresql datetime psycopg2 jsonb

我在postgresql中创建了一个表,使用下面的代码:

create table spyResults (id serial not null primary key, info jsonb not null);

现在,在Python中我想将数据插入到该表中。我正在使用以下代码传递数据:

cur.execute("INSERT INTO %s(info) VALUES (%s)",[AsIs('spyResults'),json.dumps(pDoc)])

pDoc是Python字典,现在我将其转换为json并传递给查询,但问题出在我们的pDoc字典中:

 datetime.datetime(2018, 3, 8, 10, 29, 49, 178285) also

当我尝试插入时,我们收到以下错误:

datetime.datetime(2018, 3, 8, 10, 29, 49, 178285) is not JSON serializable

请建议如何解决此问题。感谢。

编辑:它不是重复的问题,因为我们没有将datetime对象作为参数,它在字典中出现,我们能够将pDoc asis插入mongodb,我期待与postgreSQL一样。

1 个答案:

答案 0 :(得分:1)

json无法开箱即用。最简单的解决方案是传递datetime对象或字符串,如果您希望使用其他格式,可以使用your_datetime_object.isoformat()strftime方法实现。