sqlalchemy: Regression on 1.3.16 when fetching table schema for SQL Server
This issue is happening on CentOS Linux release 7.7.1908, it does not happen on a recent MacOS.
When fetching table columns (schema) from MS SQL Server using core, the following error is raised:
File "<string>", line 2, in __new__
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/util/deprecations.py", line 128, in warned
return fn(*args, **kwargs)
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line 507, in __new__
metadata._remove_table(name, schema)
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 69, in __exit__
exc_value, with_traceback=exc_tb,
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
raise exception
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line 502, in __new__
table._init(name, metadata, *args, **kw)
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line 596, in _init
resolve_fks=resolve_fks,
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line 620, in _autoload
_extend_on=_extend_on,
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1624, in run_callable
return callable_(self, *args, **kwargs)
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 467, in reflecttable
table, include_columns, exclude_columns, resolve_fks, **opts
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 661, in reflecttable
table_name, schema, **table.dialect_kwargs
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 388, in get_columns
self.bind, table_name, schema, info_cache=self.info_cache, **kw
File "<string>", line 2, in get_columns
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/reflection.py", line 52, in cache
ret = fn(self, con, *args, **kw)
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/dialects/mssql/base.py", line 2185, in wrap
**kw
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/dialects/mssql/base.py", line 2200, in _switch_db
return fn(*arg, **kw)
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/dialects/mssql/base.py", line 2606, in get_columns
c = connection.execute(s)
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 984, in execute
return meth(self, multiparams, params)
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 293, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1103, in _execute_clauseelement
distilled_params,
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1288, in _execute_context
e, statement, parameters, cursor, context
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1482, in _handle_dbapi_exception
sqlalchemy_exception, with_traceback=exc_info[2], from_=e
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
raise exception
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1248, in _execute_context
cursor, statement, parameters, context
File "/opt/applications/inrem/VENV/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 590, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42000', '[42000] [FreeTDS][SQL Server]Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. (4004) (SQLExecDirectW)')
[SQL: SELECT [INFORMATION_SCHEMA].[COLUMNS].[TABLE_SCHEMA], [INFORMATION_SCHEMA].[COLUMNS].[TABLE_NAME], [INFORMATION_SCHEMA].[COLUMNS].[COLUMN_NAME], [INFORMATION_SCHEMA].[COLUMNS].[IS_NULLABLE], [INFORMATION_SCHEMA].[COLUMNS].[DATA_TYPE], [INFORMATION_SCHEMA].[COLUMNS].[ORDINAL_POSITION], [INFORMATION_SCHEMA].[COLUMNS].[CHARACTER_MAXIMUM_LENGTH], [INFORMATION_SCHEMA].[COLUMNS].[NUMERIC_PRECISION], [INFORMATION_SCHEMA].[COLUMNS].[NUMERIC_SCALE], [INFORMATION_SCHEMA].[COLUMNS].[COLUMN_DEFAULT], [INFORMATION_SCHEMA].[COLUMNS].[COLLATION_NAME], sys.computed_columns.definition, sys.computed_columns.is_persisted
FROM [INFORMATION_SCHEMA].[COLUMNS] LEFT OUTER JOIN sys.computed_columns ON sys.computed_columns.object_id = object_id(concat([INFORMATION_SCHEMA].[COLUMNS].[TABLE_SCHEMA], ?, [INFORMATION_SCHEMA].[COLUMNS].[TABLE_NAME])) AND [INFORMATION_SCHEMA].[COLUMNS].[COLUMN_NAME] = sys.computed_columns.name
WHERE [INFORMATION_SCHEMA].[COLUMNS].[TABLE_NAME] = CAST(? AS NVARCHAR(max)) AND [INFORMATION_SCHEMA].[COLUMNS].[TABLE_SCHEMA] = CAST(? AS NVARCHAR(max)) ORDER BY [INFORMATION_SCHEMA].[COLUMNS].[ORDINAL_POSITION]]
[parameters: ('.', 'MemberRegistration', '_Core')]
(Background on this error at: http://sqlalche.me/e/f405)
Python 3.6.8
Reverting back to version 1.3.15 fixes the error.
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 1
- Comments: 32 (25 by maintainers)
yep, this latest patch fixes it