Thread: [Sqlalchemy-tickets] [sqlalchemy] #1909: reflection issue with mysql
Brought to you by:
zzzeek
From: sqlalchemy <mi...@zz...> - 2010-09-10 10:21:45
|
#1909: reflection issue with mysql --------------------+------------------------------------------------------- Reporter: chrisw | Owner: Type: defect | Status: new Priority: medium | Milestone: Component: mysql | Severity: no triage selected yet Keywords: | Status_field: awaiting triage --------------------+------------------------------------------------------- from sqlalchemy import create_engine,MetaData engine = create_engine('mysql://user:pass@server') metadata = MetaData(engine,reflect=True) gives: metadata = MetaData(engine,reflect=True) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 1927, in __init__ self.reflect() File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 2037, in reflect connection=conn)) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/base.py", line 1852, in table_names return self.dialect.get_table_names(conn, schema) File "<string>", line 1, in <lambda> File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/reflection.py", line 32, in cache return fn(self, con, *args, **kw) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/base.py", line 1791, in get_table_names self.identifier_preparer.quote_identifier(current_schema)) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/sql/compiler.py", line 1517, in quote_identifier return self.initial_quote + self._escape_identifier(value) + self.final_quote File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/mysqldb.py", line 77, in _escape_identifier value = value.replace(self.escape_quote, self.escape_to_quote) AttributeError: 'NoneType' object has no attribute 'replace' The issue appears to be the lack of database name in the url. However, that seems a legit use case given the new multi-schema support... -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1909> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2010-09-10 10:23:01
|
#1909: reflection issue with mysql --------------------+------------------------------------------------------- Reporter: chrisw | Owner: Type: defect | Status: new Priority: medium | Milestone: Component: mysql | Severity: no triage selected yet Keywords: | Status_field: awaiting triage --------------------+------------------------------------------------------- Old description: > from sqlalchemy import create_engine,MetaData > engine = create_engine('mysql://user:pass@server') > metadata = MetaData(engine,reflect=True) > > gives: > > metadata = MetaData(engine,reflect=True) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 1927, in > __init__ > self.reflect() > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 2037, in > reflect > connection=conn)) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/base.py", line 1852, in > table_names > return self.dialect.get_table_names(conn, schema) > File "<string>", line 1, in <lambda> > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/reflection.py", line > 32, in cache > return fn(self, con, *args, **kw) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/base.py", line > 1791, in get_table_names > self.identifier_preparer.quote_identifier(current_schema)) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/sql/compiler.py", line 1517, > in quote_identifier > return self.initial_quote + self._escape_identifier(value) + > self.final_quote > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/mysqldb.py", > line 77, in _escape_identifier > value = value.replace(self.escape_quote, self.escape_to_quote) > AttributeError: 'NoneType' object has no attribute 'replace' > > The issue appears to be the lack of database name in the url. > However, that seems a legit use case given the new multi-schema > support... New description: code:: from sqlalchemy import create_engine,MetaData engine = create_engine('mysql://user:pass@server') metadata = MetaData(engine,reflect=True) gives:: metadata = MetaData(engine,reflect=True) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 1927, in __init__ self.reflect() File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 2037, in reflect connection=conn)) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/base.py", line 1852, in table_names return self.dialect.get_table_names(conn, schema) File "<string>", line 1, in <lambda> File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/reflection.py", line 32, in cache return fn(self, con, *args, **kw) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/base.py", line 1791, in get_table_names self.identifier_preparer.quote_identifier(current_schema)) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/sql/compiler.py", line 1517, in quote_identifier return self.initial_quote + self._escape_identifier(value) + self.final_quote File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/mysqldb.py", line 77, in _escape_identifier value = value.replace(self.escape_quote, self.escape_to_quote) AttributeError: 'NoneType' object has no attribute 'replace' The issue appears to be the lack of database name in the url. However, that seems a legit use case given the new multi-schema support... -- Comment(by chrisw): try and fix formatting -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1909#comment:1> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2010-09-10 10:24:07
|
#1909: reflection issue with mysql --------------------+------------------------------------------------------- Reporter: chrisw | Owner: Type: defect | Status: new Priority: medium | Milestone: Component: mysql | Severity: no triage selected yet Keywords: | Status_field: awaiting triage --------------------+------------------------------------------------------- Old description: > code:: > > from sqlalchemy import create_engine,MetaData > engine = create_engine('mysql://user:pass@server') > metadata = MetaData(engine,reflect=True) > > gives:: > > metadata = MetaData(engine,reflect=True) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 1927, in > __init__ > self.reflect() > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 2037, in > reflect > connection=conn)) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/base.py", line 1852, in > table_names > return self.dialect.get_table_names(conn, schema) > File "<string>", line 1, in <lambda> > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/reflection.py", line > 32, in cache > return fn(self, con, *args, **kw) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/base.py", line > 1791, in get_table_names > self.identifier_preparer.quote_identifier(current_schema)) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/sql/compiler.py", line 1517, > in quote_identifier > return self.initial_quote + self._escape_identifier(value) + > self.final_quote > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/mysqldb.py", > line 77, in _escape_identifier > value = value.replace(self.escape_quote, self.escape_to_quote) > AttributeError: 'NoneType' object has no attribute 'replace' > > The issue appears to be the lack of database name in the url. > However, that seems a legit use case given the new multi-schema > support... New description: code: from sqlalchemy import create_engine,MetaData engine = create_engine('mysql://user:pass@server') metadata = MetaData(engine,reflect=True) gives: metadata = MetaData(engine,reflect=True) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 1927, in __init__ self.reflect() File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 2037, in reflect connection=conn)) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/base.py", line 1852, in table_names return self.dialect.get_table_names(conn, schema) File "<string>", line 1, in <lambda> File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/reflection.py", line 32, in cache return fn(self, con, *args, **kw) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/base.py", line 1791, in get_table_names self.identifier_preparer.quote_identifier(current_schema)) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/sql/compiler.py", line 1517, in quote_identifier return self.initial_quote + self._escape_identifier(value) + self.final_quote File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/mysqldb.py", line 77, in _escape_identifier value = value.replace(self.escape_quote, self.escape_to_quote) AttributeError: 'NoneType' object has no attribute 'replace' The issue appears to be the lack of database name in the url. However, that seems a legit use case given the new multi-schema support... -- Comment(by chrisw): try again, is plain text too much to ask for? ;-) -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1909#comment:2> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2010-09-10 10:24:55
|
#1909: reflection issue with mysql --------------------+------------------------------------------------------- Reporter: chrisw | Owner: Type: defect | Status: new Priority: medium | Milestone: Component: mysql | Severity: no triage selected yet Keywords: | Status_field: awaiting triage --------------------+------------------------------------------------------- Old description: > code: > > from sqlalchemy import create_engine,MetaData > engine = create_engine('mysql://user:pass@server') > metadata = MetaData(engine,reflect=True) > > gives: > > metadata = MetaData(engine,reflect=True) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 1927, in > __init__ > self.reflect() > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 2037, in > reflect > connection=conn)) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/base.py", line 1852, in > table_names > return self.dialect.get_table_names(conn, schema) > File "<string>", line 1, in <lambda> > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/reflection.py", line > 32, in cache > return fn(self, con, *args, **kw) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/base.py", line > 1791, in get_table_names > self.identifier_preparer.quote_identifier(current_schema)) > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/sql/compiler.py", line 1517, > in quote_identifier > return self.initial_quote + self._escape_identifier(value) + > self.final_quote > File "/opt/buildout- > eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/mysqldb.py", > line 77, in _escape_identifier > value = value.replace(self.escape_quote, self.escape_to_quote) > AttributeError: 'NoneType' object has no attribute 'replace' > > The issue appears to be the lack of database name in the url. > However, that seems a legit use case given the new multi-schema > support... New description: code: {{{ from sqlalchemy import create_engine,MetaData engine = create_engine('mysql://user:pass@server') metadata = MetaData(engine,reflect=True) }}} gives: {{{ metadata = MetaData(engine,reflect=True) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 1927, in __init__ self.reflect() File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/schema.py", line 2037, in reflect connection=conn)) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/base.py", line 1852, in table_names return self.dialect.get_table_names(conn, schema) File "<string>", line 1, in <lambda> File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/engine/reflection.py", line 32, in cache return fn(self, con, *args, **kw) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/base.py", line 1791, in get_table_names self.identifier_preparer.quote_identifier(current_schema)) File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/sql/compiler.py", line 1517, in quote_identifier return self.initial_quote + self._escape_identifier(value) + self.final_quote File "/opt/buildout- eggs/SQLAlchemy-0.6.4-py2.5.egg/sqlalchemy/dialects/mysql/mysqldb.py", line 77, in _escape_identifier value = value.replace(self.escape_quote, self.escape_to_quote) AttributeError: 'NoneType' object has no attribute 'replace' The issue appears to be the lack of database name in the url. However, that seems a legit use case given the new multi-schema support... }}} -- Comment(by chrisw): win? -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1909#comment:3> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2010-09-10 14:30:25
|
#1909: reflection issue with mysql --------------------+------------------------------------------------------- Reporter: chrisw | Owner: Type: defect | Status: new Priority: medium | Milestone: Component: mysql | Severity: no triage selected yet Keywords: | Status_field: needs questions answered --------------------+------------------------------------------------------- Changes (by zzzeek): * status_field: awaiting triage => needs questions answered Comment: "current_schema" is not taken from the URL, its taken from ``SELECT DATABASE()``. Is that call working for you ? -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1909#comment:4> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2010-09-13 16:06:50
|
#1909: reflection issue with mysql --------------------+------------------------------------------------------- Reporter: chrisw | Owner: Type: defect | Status: new Priority: medium | Milestone: Component: mysql | Severity: no triage selected yet Keywords: | Status_field: needs questions answered --------------------+------------------------------------------------------- Comment(by chrisw): >>> tuple(engine.execute('SELECT DATABASE()')) ((None,),) That returns what I would expect, since no database is specified in the url. I suppose the naive expectation of reflecting from an engine not connected to a specific database is that all tables in all databases should be reflected. If that's not trivial to implement, then perhaps some explicit exception should be raised. That said, how would you set things up so that "SELECT DATABASE()" returned something other than None other than by specifying the database in the url? -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1909#comment:5> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2010-09-16 19:39:36
|
#1909: reflection issue with mysql --------------------+------------------------------------------------------- Reporter: chrisw | Owner: Type: defect | Status: new Priority: medium | Milestone: blue sky Component: mysql | Severity: major - 1-3 hours Keywords: | Status_field: not decided upon --------------------+------------------------------------------------------- Changes (by zzzeek): * status_field: needs questions answered => not decided upon * severity: no triage selected yet => major - 1-3 hours * milestone: => blue sky Comment: Frustrating since we can't really add that exception generically, it would be a MySQL thing. Usually database usernames have some kind of "default" schema that comes up when login occurs. I'm not opposed to supporting "no database selected" mode but for the foreseeable future I'd rather leave it as an unsupported thing, as I'd like any solution to take into account the full variety of backends. -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1909#comment:6> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2011-10-23 17:29:33
|
#1909: reflection issue with mysql, url with no schema failure --------------------+------------------------------------------------------- Reporter: chrisw | Owner: Type: defect | Status: new Priority: medium | Milestone: blue sky Component: mysql | Severity: major - 1-3 hours Keywords: | Status_field: not decided upon --------------------+------------------------------------------------------- -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1909#comment:7> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |