Używam biblioteki rdzeniowej SQLAlchemy do uzyskania dostępu do niektórych baz danych PostgreSQL. Rozważmy mam poniższej tabeli:Używanie niestandardowego enkodera JSON do implementacji SQLAlchemy PostgreSQL JSONB
create table foo (j jsonb);
i następujący kod Pythona:
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)
To ostatnie zdanie nie powiedzie się z powodu następującego błędu:
StatementError("(builtins.TypeError) Decimal('2') is not JSON serializable",)
dlatego pytam to pytanie: czy istnieje sposób na określenie niestandardowego kodera dla SQLAchemy do użycia podczas kodowania danych json w dialekcie PostgreSQL?
niesamowite. Pominięto tę część dokumentacji. Wypróbuję to jutro i odpowiednio zaakceptuję odpowiedź. Dzięki!! –