[Sqlalchemy-tickets] Issue #4145: Error on reflecting database schema (zzzeek/sqlalchemy)
Brought to you by:
zzzeek
From: Mark M. <iss...@bi...> - 2017-12-11 15:27:21
|
New issue 4145: Error on reflecting database schema https://bitbucket.org/zzzeek/sqlalchemy/issues/4145/error-on-reflecting-database-schema Mark Muzenhardt: If I try to reflect a database schema exactly like documented it always returns a TypeError. The underlying code is: ``` #!python from sqlalchemy.ext.automap import automap_base from sqlalchemy.orm import Session from sqlalchemy import create_engine import sqlalchemy print(sqlalchemy.__version__) Base = automap_base() engine = create_engine("mysql+mysqlconnector://schreiben:schreiben@ELIATEST:4136/mand11") Base.prepare(engine, reflect=True) sg_auf_artikel = Base.classes.sg_auf_artikel session = Session(engine) result = session.query(sg_auf_artikel).filter(sg_auf_artikel.SG_AUF_ARTIKEL_PK == 1).first() print(result) ``` And the resulting traceback reads like this: ``` #!python Traceback (most recent call last): File "C:\Users\Red Rooster\Desktop\elia_reflect.py", line 11, in <module> Base.prepare(engine, reflect=True) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\ext\automap.py", line 754, in prepare autoload_replace=False File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\sql\schema.py", line 3950, in reflect Table(name, self, **reflect_opts) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\sql\schema.py", line 445, in __new__ metadata._remove_table(name, schema) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\util\langhelpers.py", line 66, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\util\compat.py", line 187, in reraise raise value File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\sql\schema.py", line 440, in __new__ table._init(name, metadata, *args, **kw) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\sql\schema.py", line 522, in _init include_columns, _extend_on=_extend_on) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\sql\schema.py", line 535, in _autoload _extend_on=_extend_on File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\engine\base.py", line 1545, in run_callable return callable_(self, *args, **kwargs) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\engine\default.py", line 389, in reflecttable table, include_columns, exclude_columns, **opts) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\engine\reflection.py", line 602, in reflecttable table_name, schema, **table.dialect_kwargs) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\engine\reflection.py", line 312, in get_table_options info_cache=self.info_cache, **kw) File "<string>", line 2, in get_table_options File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\engine\reflection.py", line 54, in cache ret = fn(self, con, *args, **kw) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\dialects\mysql\base.py", line 1956, in get_table_options connection, table_name, schema, **kw) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\dialects\mysql\base.py", line 2095, in _parsed_state_or_create info_cache=kw.get('info_cache', None) File "<string>", line 2, in _setup_parser File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\engine\reflection.py", line 54, in cache ret = fn(self, con, *args, **kw) File "C:\Python34\lib\site-packages\sqlalchemy-1.2.0b3-py3.4-win32.egg\sqlalchemy\dialects\mysql\base.py", line 2121, in _setup_parser if re.match(r'^CREATE (?:ALGORITHM)?.* VIEW', sql): File "C:\Python34\lib\re.py", line 160, in match return _compile(pattern, flags).match(string) TypeError: can't use a string pattern on a bytes-like object ``` Note: That already worked absolutely fine at Python version 2.7. It seems that the code is not ready for Python 3.4 (which I use in that project right now). |