[Sqlalchemy-tickets] Issue #3179: Python 3, MSSQL 2008R2 exception in dialect when using sqltap (z
Brought to you by:
zzzeek
|
From: Marek B. <iss...@bi...> - 2014-09-02 16:04:29
|
New issue 3179: Python 3, MSSQL 2008R2 exception in dialect when using sqltap https://bitbucket.org/zzzeek/sqlalchemy/issue/3179/python-3-mssql-2008r2-exception-in-dialect Marek Baczyński: ``` Traceback (most recent call last): File "C:\Python34\lib\runpy.py", line 170, in _run_module_as_main "__main__", mod_spec) File "C:\Python34\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Python34\lib\cProfile.py", line 160, in <module> main() File "C:\Python34\lib\cProfile.py", line 153, in main runctx(code, globs, None, options.outfile, options.sort) File "C:\Python34\lib\cProfile.py", line 20, in runctx filename, sort) File "C:\Python34\lib\profile.py", line 64, in runctx prof.runctx(statement, globals, locals) File "C:\Python34\lib\cProfile.py", line 100, in runctx exec(cmd, globals, locals) File "tests/benchmark.py", line 207, in <module> sqltap.report(statistics, "report.html") File "...\venv\lib\site-packages\sqltap\sqltap.py", line 277, in report group = query_groups[str(qstats.text)] File "...\venv\lib\site-packages\sqlalchemy\sql\elements.py", line 502, in __str__ return str(self.compile()) File "<string>", line 1, in <lambda> File "...\venv\lib\site-packages\sqlalchemy\sql\elements.py", line 492, in compile return self._compiler(dialect, bind=bind, **kw) File "...\venv\lib\site-packages\sqlalchemy\sql\elements.py", line 498, in _compiler return dialect.statement_compiler(dialect, self, **kw) File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 395, in __init__ Compiled.__init__(self, dialect, statement, **kwargs) File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 199, in __init__ self.string = self.process(self.statement, **compile_kwargs) File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 222, in process return obj._compiler_dispatch(self, **kwargs) File "...\venv\lib\site-packages\sqlalchemy\sql\visitors.py", line 80, in _compiler_dispatch return meth(self, **kw) File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 1544, in visit_select t = select._whereclause._compiler_dispatch(self, **kwargs) File "...\venv\lib\site-packages\sqlalchemy\sql\visitors.py", line 80, in _compiler_dispatch return meth(self, **kw) File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 662, in visit_clauselist for c in clauselist.clauses) File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 659, in <genexpr> s for s in File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 662, in <genexpr> for c in clauselist.clauses) File "...\venv\lib\site-packages\sqlalchemy\sql\visitors.py", line 80, in _compiler_dispatch return meth(self, **kw) File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 847, in visit_binary return self._generate_generic_binary(binary, opstring, **kw) File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 864, in _generate_generic_binary binary.right._compiler_dispatch(self, **kw) File "...\venv\lib\site-packages\sqlalchemy\sql\visitors.py", line 80, in _compiler_dispatch return meth(self, **kw) File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 981, in visit_bindparam skip_bind_expression=True) File "...\venv\lib\site-packages\sqlalchemy\sql\compiler.py", line 222, in process return obj._compiler_dispatch(self, **kwargs) File "...\venv\lib\site-packages\sqlalchemy\ext\compiler.py", line 413, in <lambda> lambda *arg, **kw: existing(*arg, **kw)) File "...\venv\lib\site-packages\sqlalchemy\ext\compiler.py", line 451, in __call__ return fn(element, compiler, **kw) File "...\venv\lib\site-packages\sqlalchemy\dialects\mssql\information_schema.py", line 41, in _compile if compiler.dialect.server_version_info < base.MS_2005_VERSION: TypeError: unorderable types: NoneType() < tuple() ``` I worked around it by hacking in venv\lib\site-packages\sqlalchemy\dialects\mssql\information_schema.py: ```python @compiles(_cast_on_2005) def _compile(element, compiler, **kw): from . import base try: if compiler.dialect.server_version_info < base.MS_2005_VERSION: return compiler.process(element.bindvalue, **kw) else: return compiler.process(cast(element.bindvalue, Unicode), **kw) except TypeError: return compiler.process(cast(element.bindvalue, Unicode), **kw) ``` (added try/except) I don't really know if it's a sqlalchemy bug or a sqltap bug; reporting it here for now. |