Spaces:
Running
Running
# pysqlite2/dbapi2.py: the DB-API 2.0 interface | |
# | |
# Copyright (C) 2004-2005 Gerhard Häring <[email protected]> | |
# | |
# This file is part of pysqlite. | |
# | |
# This software is provided 'as-is', without any express or implied | |
# warranty. In no event will the authors be held liable for any damages | |
# arising from the use of this software. | |
# | |
# Permission is granted to anyone to use this software for any purpose, | |
# including commercial applications, and to alter it and redistribute it | |
# freely, subject to the following restrictions: | |
# | |
# 1. The origin of this software must not be misrepresented; you must not | |
# claim that you wrote the original software. If you use this software | |
# in a product, an acknowledgment in the product documentation would be | |
# appreciated but is not required. | |
# 2. Altered source versions must be plainly marked as such, and must not be | |
# misrepresented as being the original software. | |
# 3. This notice may not be removed or altered from any source distribution. | |
import datetime | |
import time | |
import collections.abc | |
from _sqlite3 import * | |
paramstyle = "qmark" | |
threadsafety = 1 | |
apilevel = "2.0" | |
Date = datetime.date | |
Time = datetime.time | |
Timestamp = datetime.datetime | |
def DateFromTicks(ticks): | |
return Date(*time.localtime(ticks)[:3]) | |
def TimeFromTicks(ticks): | |
return Time(*time.localtime(ticks)[3:6]) | |
def TimestampFromTicks(ticks): | |
return Timestamp(*time.localtime(ticks)[:6]) | |
version_info = tuple([int(x) for x in version.split(".")]) | |
sqlite_version_info = tuple([int(x) for x in sqlite_version.split(".")]) | |
Binary = memoryview | |
collections.abc.Sequence.register(Row) | |
def register_adapters_and_converters(): | |
def adapt_date(val): | |
return val.isoformat() | |
def adapt_datetime(val): | |
return val.isoformat(" ") | |
def convert_date(val): | |
return datetime.date(*map(int, val.split(b"-"))) | |
def convert_timestamp(val): | |
datepart, timepart = val.split(b" ") | |
year, month, day = map(int, datepart.split(b"-")) | |
timepart_full = timepart.split(b".") | |
hours, minutes, seconds = map(int, timepart_full[0].split(b":")) | |
if len(timepart_full) == 2: | |
microseconds = int('{:0<6.6}'.format(timepart_full[1].decode())) | |
else: | |
microseconds = 0 | |
val = datetime.datetime(year, month, day, hours, minutes, seconds, microseconds) | |
return val | |
register_adapter(datetime.date, adapt_date) | |
register_adapter(datetime.datetime, adapt_datetime) | |
register_converter("date", convert_date) | |
register_converter("timestamp", convert_timestamp) | |
register_adapters_and_converters() | |
# bpo-24464: enable_shared_cache was deprecated in Python 3.10. It's | |
# scheduled for removal in Python 3.12. | |
def enable_shared_cache(enable): | |
from _sqlite3 import enable_shared_cache as _old_enable_shared_cache | |
import warnings | |
msg = ( | |
"enable_shared_cache is deprecated and will be removed in Python 3.12. " | |
"Shared cache is strongly discouraged by the SQLite 3 documentation. " | |
"If shared cache must be used, open the database in URI mode using" | |
"the cache=shared query parameter." | |
) | |
warnings.warn(msg, DeprecationWarning, stacklevel=2) | |
return _old_enable_shared_cache(enable) | |
# Clean up namespace | |
del(register_adapters_and_converters) | |