diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2021-10-28 15:43:15 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2021-10-28 15:43:15 +0000 |
| commit | 7a24a9a9cd294ef6da4a95207b45afefcfc79321 (patch) | |
| tree | aaa47144398366c9af722aaa3c5f921ede76a094 /lib/sqlalchemy | |
| parent | 134d4953a9f3c3871aff1352c1d2c3926c9426c5 (diff) | |
| parent | 75fb1c7479b9ddeaaed5604c0111382edc69e4ee (diff) | |
| download | sqlalchemy-7a24a9a9cd294ef6da4a95207b45afefcfc79321.tar.gz | |
Merge "Improve array support on pg8000" into main
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/array.py | 2 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/pg8000.py | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/type_api.py | 3 |
3 files changed, 11 insertions, 2 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/array.py b/lib/sqlalchemy/dialects/postgresql/array.py index 9659d31b9..0cb574dac 100644 --- a/lib/sqlalchemy/dialects/postgresql/array.py +++ b/lib/sqlalchemy/dialects/postgresql/array.py @@ -375,7 +375,7 @@ class ARRAY(sqltypes.ARRAY): if value is None: return value # isinstance(value, util.string_types) is required to handle - # the # case where a TypeDecorator for and Array of Enum is + # the case where a TypeDecorator for and Array of Enum is # used like was required in sa < 1.3.17 return super_rp( handle_raw_string(value) diff --git a/lib/sqlalchemy/dialects/postgresql/pg8000.py b/lib/sqlalchemy/dialects/postgresql/pg8000.py index d42dd9560..a94f9dcdb 100644 --- a/lib/sqlalchemy/dialects/postgresql/pg8000.py +++ b/lib/sqlalchemy/dialects/postgresql/pg8000.py @@ -93,6 +93,8 @@ import decimal import re from uuid import UUID as _python_UUID +from .array import ARRAY as PGARRAY +from .base import _ColonCast from .base import _DECIMAL_TYPES from .base import _FLOAT_TYPES from .base import _INT_TYPES @@ -256,6 +258,11 @@ class _PGBoolean(sqltypes.Boolean): return dbapi.BOOLEAN +class _PGARRAY(PGARRAY): + def bind_expression(self, bindvalue): + return _ColonCast(bindvalue, self) + + _server_side_id = util.counter() @@ -384,6 +391,7 @@ class PGDialect_pg8000(PGDialect): sqltypes.SmallInteger: _PGSmallInteger, sqltypes.BigInteger: _PGBigInteger, sqltypes.Enum: _PGEnum, + sqltypes.ARRAY: _PGARRAY, }, ) diff --git a/lib/sqlalchemy/sql/type_api.py b/lib/sqlalchemy/sql/type_api.py index acf88f0da..2a4688bcc 100644 --- a/lib/sqlalchemy/sql/type_api.py +++ b/lib/sqlalchemy/sql/type_api.py @@ -633,7 +633,8 @@ class TypeEngine(Traversible): try: return dialect._type_memos[self]["impl"] except KeyError: - return self._dialect_info(dialect)["impl"] + pass + return self._dialect_info(dialect)["impl"] def _unwrapped_dialect_impl(self, dialect): """Return the 'unwrapped' dialect impl for this type. |
