- attached pymssql_col_length_trunk.patch
max_identifier_length needed for pymssql
Per this post from May, it seems that column identifier truncation for MSSQL dialects was removed. When SQLAlchemy generates column labels that are longer than 30 characters, pymssql on Linux with FreeTDS will truncate the labels to 30 characters. This will cause SQLAlchemy to throw an exception similar to the following:
File '/usr/lib/python2.5/site-packages/sqlalchemy/ext/assignmapper.py', line 7 in do
return getattr(query, name)(*args, **kwargs)
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/query.py', line 137 in get_by
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/query.py', line 326 in select_whereclause
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/query.py', line 955 in _select_statement
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/query.py', line 857 in execute
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/query.py', line 916 in instances
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/mapper.py', line 1471 in _instance
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/mapper.py', line 1508 in populate_instance
File '/usr/lib/python2.5/site-packages/sqlalchemy/orm/interfaces.py', line 163 in execute
self._get_context_strategy(selectcontext).process_row(selectcontext, instance, row, identitykey, isnew)
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/strategies.py', line 39 in process_row
File 'build/bdist.linux-i686/egg/sqlalchemy/engine/base.py', line 1173 in __getitem__
File 'build/bdist.linux-i686/egg/sqlalchemy/engine/base.py', line 994 in _get_col
File 'build/bdist.linux-i686/egg/sqlalchemy/engine/base.py', line 931 in _convert_key
NoSuchColumnError: "Could not locate column in row for column 'Column('emp_termination_date',DateTime(timezone=False))'"
When I add back the limit (see patches) as it was in earlier releases, no exceptions are thrown and correct data is returned. It seems to have been last removed in 3377, when similar properties were converted from methods to attributes. That one was just removed, however.
I'm still working on a test case.
Comments (5)
-
Account Deleted -
Account Deleted - attached pymssql_col_length_3_10.patch
max_identifier_length/pymssql patch (0.3.10, uses method)
-
repo owner - changed milestone to 0.4.0
can we also implement for pyodbc/adodbapi
-
Account Deleted - changed status to resolved
(original author: ram) Committed in ed0bf8fce7680b81b4ea7be136101321314ed611 for pymssql only; I don't know the identifier sizes for the other DBAPIs, so re-open if needed.
-
repo owner - removed milestone
Removing milestone: 0.4.0 (automated comment)
- Log in to comment
max_identifier_length/pymssql patch (trunk)