Fix SQLite convert interval for min/max value
The total_seconds of timedelta min and max can not be used to instanciate a timedelta. So we need to test for such case and return timedelta min or max.
This commit is contained in:
1 parent
0991a552de
commit
5a34e18b75
1 file changed
+13
-2
@@ -420,5 +420,16 @@ sqlite.register_adapter(datetime.time, lambda val: val.isoformat())
|
||||
sqlite.register_converter('TIME', lambda val: datetime.time(*map(int,
|
||||
val.split(':'))))
|
||||
sqlite.register_adapter(datetime.timedelta, lambda val: val.total_seconds())
|
||||
sqlite.register_converter('INTERVAL', lambda val: datetime.timedelta(
|
||||
seconds=float(val)))
|
||||
|
||||
|
||||
def convert_interval(value):
|
||||
value = float(value)
|
||||
# It is not allowed to instatiate timedelta with the min/max total seconds
|
||||
if value >= _interval_max:
|
||||
return datetime.timedelta.max
|
||||
elif value <= _interval_min:
|
||||
return datetime.timedelta.min
|
||||
return datetime.timedelta(seconds=value)
|
||||
_interval_max = datetime.timedelta.max.total_seconds()
|
||||
_interval_min = datetime.timedelta.min.total_seconds()
|
||||
sqlite.register_converter('INTERVAL', convert_interval)
|
||||
Reference in new issue
Block a user