Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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
datetime(2018,3,8,10,29,49,178285)在python中不能用psycopg2序列化JSON_Python_Postgresql_Datetime_Psycopg2_Jsonb - Fatal编程技术网

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

datetime(2018,3,8,10,29,49,178285)在python中不能用psycopg2序列化JSON,python,postgresql,datetime,psycopg2,jsonb,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字典,现在我将

我已使用以下代码在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也是如此。

json
无法直接序列化日期。最简单的解决方案是传递
datetime
对象或字符串,这可以通过
your\u datetime\u object.isoformat()实现
或使用
strftime
方法,如果您希望使用不同的格式。

已编辑,请再次检查并确认。但在postgreSQL时间戳中,时间戳存储为字符串,但如果我们要查询日期,我们如何才能做到这一点,例如大于当前日期或小于其他日期?您可以从Python中查询数据库,如下所示:
cur.execute(“从my_表中选择*其中my_日期>(%s)”,datetime.date(2018,03,09))
。只要格式与日期列期望的格式相匹配,则传递字符串也应该有效。