【发布时间】:2016-07-26 02:01:13
【问题描述】:
我正在使用 SQLAlchemy 的核心库来访问一些 PostgreSQL 数据库。考虑一下我有下表:
create table foo (j jsonb);
还有下面的python代码:
from decimal import *
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey, DateTime
from sqlalchemy.dialects.postgresql import JSONB
metadata = MetaData(schema="public")
foo = Table('foo', metadata,Column('f', JSONB))
d = Decimal(2)
ins = foo.insert().values(j = {'d': d})
# assuming engine is a valid sqlalchemy's connection
engine.execute(ins)
最后一句失败并出现以下错误:
StatementError("(builtins.TypeError) Decimal('2') is not JSON serializable",)
这就是我问这个问题的原因:有没有办法为 SQLAchemy 指定一个自定义编码器,以便在将 json 数据编码为 PostgreSQL 方言时使用?
【问题讨论】:
标签: python json postgresql sqlalchemy