mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-07-23 01:14:31 +02:00
Store decimal.Decimal in DB as FLOAT, closes #110
This commit is contained in:
parent
e8c57e09b6
commit
af3f81b540
2 changed files with 6 additions and 0 deletions
|
|
@ -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)):
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ from sqlite_utils.db import (
|
|||
from sqlite_utils.utils import sqlite3
|
||||
import collections
|
||||
import datetime
|
||||
import decimal
|
||||
import json
|
||||
import pathlib
|
||||
import pytest
|
||||
|
|
@ -132,6 +133,7 @@ def test_create_table_with_not_null(fresh_db):
|
|||
[{"name": "create", "type": "TEXT"}, {"name": "table", "type": "TEXT"}],
|
||||
),
|
||||
({"day": datetime.time(11, 0)}, [{"name": "day", "type": "TEXT"}]),
|
||||
({"decimal": decimal.Decimal("1.2")}, [{"name": "decimal", "type": "FLOAT"}]),
|
||||
),
|
||||
)
|
||||
def test_create_table_from_example(fresh_db, example, expected_columns):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue