Store decimal.Decimal in DB as FLOAT, closes #110

This commit is contained in:
Simon Willison 2020-05-10 18:50:03 -07:00
commit af3f81b540
2 changed files with 6 additions and 0 deletions

View file

@ -1,6 +1,7 @@
from .utils import sqlite3, OperationalError, suggest_column_types, column_affinity
from collections import namedtuple, OrderedDict
import datetime
import decimal
import hashlib
import itertools
import json
@ -42,6 +43,7 @@ COLUMN_TYPE_MAPPING = {
datetime.datetime: "TEXT",
datetime.date: "TEXT",
datetime.time: "TEXT",
decimal.Decimal: "FLOAT",
None.__class__: "TEXT",
# SQLite explicit types
"TEXT": "TEXT",
@ -1325,6 +1327,8 @@ def chunks(sequence, size):
def jsonify_if_needed(value):
if isinstance(value, decimal.Decimal):
return float(value)
if isinstance(value, (dict, list, tuple)):
return json.dumps(value, default=repr)
elif isinstance(value, (datetime.time, datetime.date, datetime.datetime)):