From 4b04bdf44d981d39bac307dd4436ff88a71d800c Mon Sep 17 00:00:00 2001 From: Wulian233 <1055917385@qq.com> Date: Thu, 27 Mar 2025 20:10:41 +0800 Subject: [PATCH 1/5] ok --- Lib/sqlite3/dbapi2.py | 5 ++++- .../Library/2025-01-21-14-51-44.gh-issue-118761.Z0F-d5.rst | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2025-01-21-14-51-44.gh-issue-118761.Z0F-d5.rst diff --git a/Lib/sqlite3/dbapi2.py b/Lib/sqlite3/dbapi2.py index 0315760516edf8..26eaf153bad7d2 100644 --- a/Lib/sqlite3/dbapi2.py +++ b/Lib/sqlite3/dbapi2.py @@ -20,9 +20,9 @@ # 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 +import datetime from _sqlite3 import * @@ -37,12 +37,15 @@ Timestamp = datetime.datetime def DateFromTicks(ticks): + import time # Lazy, to improve import time return Date(*time.localtime(ticks)[:3]) def TimeFromTicks(ticks): + import time # Lazy, to improve import time return Time(*time.localtime(ticks)[3:6]) def TimestampFromTicks(ticks): + import time # Lazy, to improve import time return Timestamp(*time.localtime(ticks)[:6]) diff --git a/Misc/NEWS.d/next/Library/2025-01-21-14-51-44.gh-issue-118761.Z0F-d5.rst b/Misc/NEWS.d/next/Library/2025-01-21-14-51-44.gh-issue-118761.Z0F-d5.rst new file mode 100644 index 00000000000000..5d9157e9085a17 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-01-21-14-51-44.gh-issue-118761.Z0F-d5.rst @@ -0,0 +1 @@ +Halve the import time of :mod:`sqlite3`. From d3cf658dba37aafbeb5c1a7545186eb886a3abd8 Mon Sep 17 00:00:00 2001 From: Wulian233 <1055917385@qq.com> Date: Fri, 6 Jun 2025 10:29:25 +0800 Subject: [PATCH 2/5] Improve the import time of `sqlite3` by 1.5x faster. --- Lib/sqlite3/__main__.py | 16 ++++++++++------ Lib/sqlite3/dbapi2.py | 6 ++++-- ...025-01-21-14-51-44.gh-issue-118761.Z0F-d5.rst | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Lib/sqlite3/__main__.py b/Lib/sqlite3/__main__.py index 79a6209468dae4..ae33a88ba6964b 100644 --- a/Lib/sqlite3/__main__.py +++ b/Lib/sqlite3/__main__.py @@ -7,10 +7,6 @@ import sqlite3 import sys -from argparse import ArgumentParser -from code import InteractiveConsole -from textwrap import dedent - def execute(c, sql, suppress_errors=True): """Helper that wraps execution of SQL code. @@ -34,13 +30,15 @@ def execute(c, sql, suppress_errors=True): sys.exit(1) -class SqliteInteractiveConsole(InteractiveConsole): +class SqliteInteractiveConsole: """A simple SQLite REPL.""" def __init__(self, connection): - super().__init__() + from code import InteractiveConsole self._con = connection self._cur = connection.cursor() + self._console = InteractiveConsole() + self._console.runsource = self.runsource def runsource(self, source, filename="", symbol="single"): """Override runsource, the core of the InteractiveConsole REPL. @@ -61,8 +59,14 @@ def runsource(self, source, filename="", symbol="single"): execute(self._cur, source) return False + def interact(self, banner, exitmsg=""): + self._console.interact(banner, exitmsg=exitmsg) + def main(*args): + from argparse import ArgumentParser + from textwrap import dedent + parser = ArgumentParser( description="Python sqlite3 CLI", ) diff --git a/Lib/sqlite3/dbapi2.py b/Lib/sqlite3/dbapi2.py index 26eaf153bad7d2..b651aea5c85904 100644 --- a/Lib/sqlite3/dbapi2.py +++ b/Lib/sqlite3/dbapi2.py @@ -20,9 +20,8 @@ # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. -import time -import collections.abc import datetime +import collections.abc from _sqlite3 import * @@ -54,7 +53,10 @@ def TimestampFromTicks(ticks): Binary = memoryview collections.abc.Sequence.register(Row) +# Lazy registe def register_adapters_and_converters(): + global _lazy_register + _lazy_register = lambda: None # Prevent multiple registration # noqa: E731 from warnings import warn msg = ("The default {what} is deprecated as of Python 3.12; " diff --git a/Misc/NEWS.d/next/Library/2025-01-21-14-51-44.gh-issue-118761.Z0F-d5.rst b/Misc/NEWS.d/next/Library/2025-01-21-14-51-44.gh-issue-118761.Z0F-d5.rst index 5d9157e9085a17..eab19174b21825 100644 --- a/Misc/NEWS.d/next/Library/2025-01-21-14-51-44.gh-issue-118761.Z0F-d5.rst +++ b/Misc/NEWS.d/next/Library/2025-01-21-14-51-44.gh-issue-118761.Z0F-d5.rst @@ -1 +1 @@ -Halve the import time of :mod:`sqlite3`. +Improve the import time of :mod:`sqlite3` by 1.5x faster. From def197450d5718aef3f8e8acc0d91ff221b47962 Mon Sep 17 00:00:00 2001 From: Wulian233 <1055917385@qq.com> Date: Fri, 6 Jun 2025 10:47:41 +0800 Subject: [PATCH 3/5] fix & finish --- Lib/sqlite3/__main__.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Lib/sqlite3/__main__.py b/Lib/sqlite3/__main__.py index 21f46549fc159a..ab9834fe12cfb6 100644 --- a/Lib/sqlite3/__main__.py +++ b/Lib/sqlite3/__main__.py @@ -7,6 +7,7 @@ import sqlite3 import sys +from code import InteractiveConsole from _colorize import get_theme, theme_no_color @@ -36,15 +37,13 @@ def execute(c, sql, suppress_errors=True, theme=theme_no_color): sys.exit(1) -class SqliteInteractiveConsole: +class SqliteInteractiveConsole(InteractiveConsole): """A simple SQLite REPL.""" def __init__(self, connection, use_color=False): from code import InteractiveConsole self._con = connection self._cur = connection.cursor() - self._console = InteractiveConsole() - self._console.runsource = self.runsource self._use_color = use_color def runsource(self, source, filename="", symbol="single"): @@ -77,9 +76,6 @@ def runsource(self, source, filename="", symbol="single"): execute(self._cur, source, theme=theme) return False - def interact(self, banner, exitmsg=""): - self._console.interact(banner, exitmsg=exitmsg) - def main(*args): from argparse import ArgumentParser From 04eedab50ef77749ae361d0aeeb3970f4b3a1a11 Mon Sep 17 00:00:00 2001 From: Wulian233 <1055917385@qq.com> Date: Fri, 6 Jun 2025 10:49:08 +0800 Subject: [PATCH 4/5] Update dbapi2.py --- Lib/sqlite3/dbapi2.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Lib/sqlite3/dbapi2.py b/Lib/sqlite3/dbapi2.py index b651aea5c85904..53cafad41a2fe3 100644 --- a/Lib/sqlite3/dbapi2.py +++ b/Lib/sqlite3/dbapi2.py @@ -53,7 +53,6 @@ def TimestampFromTicks(ticks): Binary = memoryview collections.abc.Sequence.register(Row) -# Lazy registe def register_adapters_and_converters(): global _lazy_register _lazy_register = lambda: None # Prevent multiple registration # noqa: E731 From ccf3575d521358ed9d41c26474560a862a3d9188 Mon Sep 17 00:00:00 2001 From: Wulian233 <1055917385@qq.com> Date: Fri, 6 Jun 2025 10:56:08 +0800 Subject: [PATCH 5/5] fix --- Lib/sqlite3/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/sqlite3/__main__.py b/Lib/sqlite3/__main__.py index ab9834fe12cfb6..471273b32131f8 100644 --- a/Lib/sqlite3/__main__.py +++ b/Lib/sqlite3/__main__.py @@ -41,7 +41,7 @@ class SqliteInteractiveConsole(InteractiveConsole): """A simple SQLite REPL.""" def __init__(self, connection, use_color=False): - from code import InteractiveConsole + super().__init__() self._con = connection self._cur = connection.cursor() self._use_color = use_color pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy