diff options
| author | Florian Apolloner <florian@apolloner.eu> | 2022-12-12 09:08:46 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-12-12 10:35:38 +0100 |
| commit | 2f38f7b8f9bd65905dc6bec4f3e2a30b5da8e338 (patch) | |
| tree | 83d8afed86eaea00bc908ffabe0370eb74d7e0f0 /django/db/backends/postgresql | |
| parent | 2ebfbd894e21e1656c1e1f32d98b8df7a32d3649 (diff) | |
Refs #33308 -- Added psycopg_any.sql.quote() hook.
Diffstat (limited to 'django/db/backends/postgresql')
| -rw-r--r-- | django/db/backends/postgresql/psycopg_any.py | 13 | ||||
| -rw-r--r-- | django/db/backends/postgresql/schema.py | 8 |
2 files changed, 14 insertions, 7 deletions
diff --git a/django/db/backends/postgresql/psycopg_any.py b/django/db/backends/postgresql/psycopg_any.py index 6dcd68f5eb..8e0d170867 100644 --- a/django/db/backends/postgresql/psycopg_any.py +++ b/django/db/backends/postgresql/psycopg_any.py @@ -1,6 +1,17 @@ -from psycopg2 import errors, extensions # NOQA +from psycopg2 import errors, extensions, sql # NOQA from psycopg2.extras import DateRange, DateTimeRange, DateTimeTZRange, Inet # NOQA from psycopg2.extras import Json as Jsonb # NOQA from psycopg2.extras import NumericRange, Range # NOQA RANGE_TYPES = (DateRange, DateTimeRange, DateTimeTZRange, NumericRange) + + +def _quote(value, connection=None): + adapted = extensions.adapt(value) + if hasattr(adapted, "encoding"): + adapted.encoding = "utf8" + # getquoted() returns a quoted bytestring of the adapted value. + return adapted.getquoted().decode() + + +sql.quote = _quote diff --git a/django/db/backends/postgresql/schema.py b/django/db/backends/postgresql/schema.py index 0c2043db35..cc0da85817 100644 --- a/django/db/backends/postgresql/schema.py +++ b/django/db/backends/postgresql/schema.py @@ -1,6 +1,6 @@ from django.db.backends.base.schema import BaseDatabaseSchemaEditor from django.db.backends.ddl_references import IndexColumns -from django.db.backends.postgresql.psycopg_any import extensions +from django.db.backends.postgresql.psycopg_any import sql from django.db.backends.utils import strip_quotes @@ -51,11 +51,7 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor): def quote_value(self, value): if isinstance(value, str): value = value.replace("%", "%%") - adapted = extensions.adapt(value) - if hasattr(adapted, "encoding"): - adapted.encoding = "utf8" - # getquoted() returns a quoted bytestring of the adapted value. - return adapted.getquoted().decode() + return sql.quote(value, self.connection.connection) def _field_indexes_sql(self, model, field): output = super()._field_indexes_sql(model, field) |
