From: Daniele Varrazzo Date: Sun, 11 Jul 2021 12:41:54 +0000 (+0200) Subject: Expose postgres.adapters from the psycopg package X-Git-Tag: 3.0.dev1~28^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=11277bc3fb8c34d9d77d8561ce71c687f9d8ce35;p=thirdparty%2Fpsycopg.git Expose postgres.adapters from the psycopg package --- diff --git a/psycopg/psycopg/__init__.py b/psycopg/psycopg/__init__.py index dcf1cc313..5aa40c536 100644 --- a/psycopg/psycopg/__init__.py +++ b/psycopg/psycopg/__init__.py @@ -33,15 +33,16 @@ if logger.level == logging.NOTSET: logger.setLevel(logging.WARNING) # register default adapters for PostgreSQL -postgres.register_default_adapters(postgres.adapters) +adapters = postgres.adapters # exposed by the package +postgres.register_default_adapters(adapters) # DBAPI compliancy connect = Connection.connect apilevel = "2.0" threadsafety = 2 paramstyle = "pyformat" -postgres.adapters.register_dumper(Binary, BinaryTextDumper) # dbapi20 -postgres.adapters.register_dumper(Binary, BinaryBinaryDumper) # dbapi20 +adapters.register_dumper(Binary, BinaryTextDumper) # dbapi20 +adapters.register_dumper(Binary, BinaryBinaryDumper) # dbapi20 # Note: defining the exported methods helps both Sphynx in documenting that diff --git a/tests/test_adapt.py b/tests/test_adapt.py index dcc4e56ef..7c6a5d817 100644 --- a/tests/test_adapt.py +++ b/tests/test_adapt.py @@ -44,6 +44,22 @@ def test_quote(data, result): assert dumper.quote(data) == result +def test_dump_global_ctx(dsn): + try: + psycopg.adapters.register_dumper(MyStr, make_bin_dumper("gb")) + psycopg.adapters.register_dumper(MyStr, make_dumper("gt")) + conn = psycopg.connect(dsn) + cur = conn.execute("select %s", [MyStr("hello")]) + assert cur.fetchone() == ("hellogt",) + cur = conn.execute("select %b", [MyStr("hello")]) + assert cur.fetchone() == ("hellogb",) + cur = conn.execute("select %t", [MyStr("hello")]) + assert cur.fetchone() == ("hellogt",) + finally: + for fmt in Format: + psycopg.adapters._dumpers[fmt].pop(MyStr, None) + + def test_dump_connection_ctx(conn): conn.adapters.register_dumper(MyStr, make_bin_dumper("b")) conn.adapters.register_dumper(MyStr, make_dumper("t")) @@ -156,6 +172,22 @@ def test_cast(data, format, type, result): assert rv == result +def test_load_global_ctx(dsn): + from psycopg.types import string + + try: + psycopg.adapters.register_loader(TEXT_OID, make_loader("gt")) + psycopg.adapters.register_loader(TEXT_OID, make_bin_loader("gb")) + conn = psycopg.connect(dsn) + cur = conn.cursor(binary=False).execute("select 'hello'::text") + assert cur.fetchone() == ("hellogt",) + cur = conn.cursor(binary=True).execute("select 'hello'::text") + assert cur.fetchone() == ("hellogb",) + finally: + psycopg.adapters.register_loader(TEXT_OID, string.TextLoader) + psycopg.adapters.register_loader(TEXT_OID, string.TextBinaryLoader) + + def test_load_connection_ctx(conn): conn.adapters.register_loader(TEXT_OID, make_loader("t")) conn.adapters.register_loader(TEXT_OID, make_bin_loader("b"))