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
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"))
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"))