Skip to content

Commit 0d0d02e

Browse files
committed
Add psycopg3 support for database functions
1 parent d81ea06 commit 0d0d02e

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

sqlalchemy_utils/functions/database.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,7 @@ def create_database(url, encoding='utf8', template=None):
556556

557557
if (dialect_name == 'mssql' and dialect_driver in {'pymssql', 'pyodbc'}) \
558558
or (dialect_name == 'postgresql' and dialect_driver in {
559-
'asyncpg', 'pg8000', 'psycopg2', 'psycopg2cffi'}):
559+
'asyncpg', 'pg8000', 'psycopg', 'psycopg2', 'psycopg2cffi'}):
560560
engine = sa.create_engine(url, isolation_level='AUTOCOMMIT')
561561
else:
562562
engine = sa.create_engine(url)
@@ -625,7 +625,7 @@ def drop_database(url):
625625
if dialect_name == 'mssql' and dialect_driver in {'pymssql', 'pyodbc'}:
626626
engine = sa.create_engine(url, connect_args={'autocommit': True})
627627
elif dialect_name == 'postgresql' and dialect_driver in {
628-
'asyncpg', 'pg8000', 'psycopg2', 'psycopg2cffi'}:
628+
'asyncpg', 'pg8000', 'psycopg', 'psycopg2', 'psycopg2cffi'}:
629629
engine = sa.create_engine(url, isolation_level='AUTOCOMMIT')
630630
else:
631631
engine = sa.create_engine(url)

tests/functions/test_database.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,17 @@ def dsn(self, postgresql_db_user, postgresql_db_password):
9898
)
9999

100100

101+
class TestDatabasePostgresPsycoPG3(DatabaseTest):
102+
103+
@pytest.fixture
104+
def dsn(self, postgresql_db_user, postgresql_db_password):
105+
return 'postgresql+psycopg://{}:{}@localhost/{}'.format(
106+
postgresql_db_user,
107+
postgresql_db_password,
108+
'db_to_test_create_and_drop_via_psycopg3_driver'
109+
)
110+
111+
101112
@pytest.mark.usefixtures('postgresql_dsn')
102113
class TestDatabasePostgresWithQuotedName(DatabaseTest):
103114

0 commit comments

Comments
 (0)