diff options
author | mike bayer <mike_mp@zzzcomputing.com> | 2021-11-25 18:22:59 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2021-11-25 18:22:59 +0000 |
commit | 8ddb3ef165d0c2d6d7167bb861bb349e68b5e8df (patch) | |
tree | 1f61463f9888eedbd156b35858af266135f7d6e7 /lib/sqlalchemy/engine/default.py | |
parent | 3619f084bfb5208ae45686a0993d620b2711adf2 (diff) | |
parent | 939de240d31a5441ad7380738d410a976d4ecc3a (diff) | |
download | sqlalchemy-8ddb3ef165d0c2d6d7167bb861bb349e68b5e8df.tar.gz |
Merge "propose emulated setinputsizes embedded in the compiler" into main
Diffstat (limited to 'lib/sqlalchemy/engine/default.py')
-rw-r--r-- | lib/sqlalchemy/engine/default.py | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index a47ed963d..cb04eb525 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -53,9 +53,13 @@ class DefaultDialect(interfaces.Dialect): supports_alter = True supports_comments = False inline_comments = False - use_setinputsizes = False supports_statement_cache = True + bind_typing = interfaces.BindTyping.NONE + + include_set_input_sizes = None + exclude_set_input_sizes = None + # the first value we'd get for an autoincrement # column. default_sequence_base = 1 @@ -261,6 +265,15 @@ class DefaultDialect(interfaces.Dialect): else: self.server_side_cursors = True + if getattr(self, "use_setinputsizes", False): + util.warn_deprecated( + "The dialect-level use_setinputsizes attribute is " + "deprecated. Please use " + "bind_typing = BindTyping.SETINPUTSIZES", + "2.0", + ) + self.bind_typing = interfaces.BindTyping.SETINPUTSIZES + self.encoding = encoding self.positional = False self._ischema = None @@ -288,6 +301,10 @@ class DefaultDialect(interfaces.Dialect): self.label_length = label_length self.compiler_linting = compiler_linting + @util.memoized_property + def _bind_typing_render_casts(self): + return self.bind_typing is interfaces.BindTyping.RENDER_CASTS + def _ensure_has_table_connection(self, arg): if not isinstance(arg, Connection): @@ -737,9 +754,6 @@ class DefaultExecutionContext(interfaces.ExecutionContext): returned_default_rows = None execution_options = util.immutabledict() - include_set_input_sizes = None - exclude_set_input_sizes = None - cursor_fetch_strategy = _cursor._DEFAULT_FETCH cache_stats = None @@ -1374,8 +1388,14 @@ class DefaultExecutionContext(interfaces.ExecutionContext): style of ``setinputsizes()`` on the cursor, using DB-API types from the bind parameter's ``TypeEngine`` objects. - This method only called by those dialects which require it, - currently cx_oracle, asyncpg and pg8000. + This method only called by those dialects which set + the :attr:`.Dialect.bind_typing` attribute to + :attr:`.BindTyping.SETINPUTSIZES`. cx_Oracle is the only DBAPI + that requires setinputsizes(), pyodbc offers it as an option. + + Prior to SQLAlchemy 2.0, the setinputsizes() approach was also used + for pg8000 and asyncpg, which has been changed to inline rendering + of casts. """ if self.isddl or self.is_text: @@ -1383,10 +1403,7 @@ class DefaultExecutionContext(interfaces.ExecutionContext): compiled = self.compiled - inputsizes = compiled._get_set_input_sizes_lookup( - include_types=self.include_set_input_sizes, - exclude_types=self.exclude_set_input_sizes, - ) + inputsizes = compiled._get_set_input_sizes_lookup() if inputsizes is None: return |