Skip to content

Commit dfc1b17

Browse files
authored
gh-99392: Fix sqlite3 converter recipes (#99393)
1 parent fb844e1 commit dfc1b17

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

Doc/library/sqlite3.rst

+22-3
Original file line numberDiff line numberDiff line change
@@ -2112,20 +2112,39 @@ This section shows recipes for common adapters and converters.
21122112

21132113
def convert_date(val):
21142114
"""Convert ISO 8601 date to datetime.date object."""
2115-
return datetime.date.fromisoformat(val)
2115+
return datetime.date.fromisoformat(val.decode())
21162116

21172117
def convert_datetime(val):
21182118
"""Convert ISO 8601 datetime to datetime.datetime object."""
2119-
return datetime.datetime.fromisoformat(val)
2119+
return datetime.datetime.fromisoformat(val.decode())
21202120

21212121
def convert_timestamp(val):
21222122
"""Convert Unix epoch timestamp to datetime.datetime object."""
2123-
return datetime.datetime.fromtimestamp(val)
2123+
return datetime.datetime.fromtimestamp(int(val))
21242124

21252125
sqlite3.register_converter("date", convert_date)
21262126
sqlite3.register_converter("datetime", convert_datetime)
21272127
sqlite3.register_converter("timestamp", convert_timestamp)
21282128

2129+
.. testcode::
2130+
:hide:
2131+
2132+
dt = datetime.datetime(2019, 5, 18, 15, 17, 8, 123456)
2133+
2134+
assert adapt_date_iso(dt.date()) == "2019-05-18"
2135+
assert convert_date(b"2019-05-18") == dt.date()
2136+
2137+
assert adapt_datetime_iso(dt) == "2019-05-18T15:17:08.123456"
2138+
assert convert_datetime(b"2019-05-18T15:17:08.123456") == dt
2139+
2140+
# Using current time as fromtimestamp() returns local date/time.
2141+
# Droping microseconds as adapt_datetime_epoch truncates fractional second part.
2142+
now = datetime.datetime.now().replace(microsecond=0)
2143+
current_timestamp = int(now.timestamp())
2144+
2145+
assert adapt_datetime_epoch(now) == current_timestamp
2146+
assert convert_timestamp(str(current_timestamp).encode()) == now
2147+
21292148

21302149
.. _sqlite3-connection-shortcuts:
21312150

0 commit comments

Comments
 (0)