【发布时间】:2016-04-07 13:51:11
【问题描述】:
在使用 SQLAlchemy 的 PostgreSQL 9.5.2 中,JSONB 对象(一种用于存储 JSON 的结构化格式)中是否可以包含 datetime 对象。
from sqlalchemy.dialects.postgresql import JSONB
from datetime import datetime
class Object(Base):
__tablename__ = 'object'
id = Column(Integer, primary_key=True)
attributes = Column(JSONB, nullable=False)
并插入到数据库中:
with transaction.manager:
object = Object(attributes = {'name': 'miss piggy',
'created': datetime.now()})
session.add(object)
session.commit()
给我以下错误:
StatementError: (builtins.TypeError)
datetime.datetime(2016, 4, 7, 9, 51, 9, 893315) is not JSON serializable
[SQL: 'INSERT INTO object (attributes) VALUES (%(attributes)s)RETURNING object.id']
[parameters: [
{'attributes': {'name': 'miss piggy',
'created': datetime.datetime(2016, 4, 7, 9, 51, 9, 893315)}}]]
【问题讨论】:
-
不,不直接。你可以把它存储为一个字符串(或字典),然后做一些特殊的解析逻辑来确定它是一个日期时间。
标签: postgresql python-3.x datetime sqlalchemy jsonb