-
Notifications
You must be signed in to change notification settings - Fork 136
/
sqlite.py
33 lines (28 loc) · 1.02 KB
/
sqlite.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from datetime import datetime, date
from decimal import Decimal
from ..adapters.sqlite import SQLite
from .base import ListsParser, DateParser, TimeParser, DateTimeParser, \
JSONParser
from . import parsers, for_type, before_parse
@parsers.register_for(SQLite)
class SQLiteParser(
ListsParser, DateParser, TimeParser, DateTimeParser, JSONParser
):
@before_parse('decimal')
def decimal_extras(self, field_type):
return {'decimals': field_type[8:-1].split(',')[-1]}
@for_type('decimal')
def _decimal(self, value, decimals):
value = ('%.' + decimals + 'f') % value
return Decimal(value)
@for_type('date')
def _date(self, value):
if not isinstance(value, date):
return DateParser._declared_parsers_['_date'].f(self, value)
return value
@for_type('datetime')
def _datetime(self, value):
if not isinstance(value, datetime):
return DateTimeParser._declared_parsers_['_datetime'].f(
self, value)
return value