Skip to content

Commit ce4e957

Browse files
hugorodgerbrownmikicz
authored andcommitted
Add compatibility module to handle psycopg2/3 import
1 parent bb24006 commit ce4e957

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

django_pgviews/compat.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
try:
2+
from psycopg import ProgrammingError
3+
except ImportError:
4+
from psycopg2 import ProgrammingError

django_pgviews/view.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@
66
import re
77

88
import django
9-
import psycopg2
109
from django.apps import apps
1110
from django.core import exceptions
1211
from django.db import connections, router, transaction
1312
from django.db import models
1413
from django.db.backends.postgresql.schema import DatabaseSchemaEditor
1514
from django.db.models.query import QuerySet
1615

16+
from django_pgviews.compat import ProgrammingError
1717
from django_pgviews.db import get_fields_by_name
1818

19+
1920
FIELD_SPEC_REGEX = r"^([A-Za-z_][A-Za-z0-9_]*)\." r"([A-Za-z_][A-Za-z0-9_]*)\." r"(\*|(?:[A-Za-z_][A-Za-z0-9_]*))$"
2021
FIELD_SPEC_RE = re.compile(FIELD_SPEC_REGEX)
2122

@@ -289,7 +290,7 @@ def create_view(connection, view_name, view_query: ViewSQL, update=True, force=F
289290
"CREATE OR REPLACE TEMPORARY VIEW check_conflict AS {0};".format(view_query.query),
290291
view_query.params,
291292
)
292-
except psycopg2.ProgrammingError:
293+
except ProgrammingError:
293294
force_required = True
294295
finally:
295296
cursor.execute("DROP VIEW IF EXISTS check_conflict;")

0 commit comments

Comments
 (0)