- marked as major
- edited description
MySQLDialect.get_table_names() returns empty list
I used mysql-connector==2.1.4
and SQLAlchemy==1.1.5
, but accroding to the documentation connector returns bytearray
types:
In Connector/Python 1.x, the output is:
Using Python 2: [('1',)]
Using Python 3: [(b'1',)]
In Connector/Python 2.0, for both Python versions, the output is:
[(bytearray(b'1'),)]
So, I realize that the only way to make fast solution for my project -- creating monkey-patch of MySQLDialect method mentioned above.
Solution:
Added .decode('utf-8')
to row[0] and row[1] variables.
But, I think that you may know other, more elegant way to solve this problem. If not -- write to me, please. I'd like to write PR with fix by myself.
Comments (3)
-
reporter -
repo owner as always, using a more common DBAPI like mysqlclient or pymysql would be the most immediate resolution.
As for this issue, not able to reproduce:
from sqlalchemy import * e = create_engine("mysql+mysqlconnector://scott:tiger@localhost/test", echo=True) print e.dialect.dbapi.__version__ m = MetaData() t1 = Table('t1', m, Column('x', Integer)) t2 = Table('t2', m, Column('x', Integer)) t3 = Table('t3', m, Column('x', Integer)) m.create_all(e) print inspect(e).get_table_names()
#! 2.1.5 2017-02-27 09:10:00,925 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'sql_mode' 2017-02-27 09:10:00,926 INFO sqlalchemy.engine.base.Engine {} 2017-02-27 09:10:00,927 INFO sqlalchemy.engine.base.Engine SELECT DATABASE() 2017-02-27 09:10:00,927 INFO sqlalchemy.engine.base.Engine {} 2017-02-27 09:10:00,929 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS CHAR(60)) AS anon_1 2017-02-27 09:10:00,930 INFO sqlalchemy.engine.base.Engine {} 2017-02-27 09:10:00,931 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS CHAR(60)) AS anon_1 2017-02-27 09:10:00,931 INFO sqlalchemy.engine.base.Engine {} 2017-02-27 09:10:00,933 INFO sqlalchemy.engine.base.Engine DESCRIBE `t2` 2017-02-27 09:10:00,933 INFO sqlalchemy.engine.base.Engine {} 2017-02-27 09:10:00,936 INFO sqlalchemy.engine.base.Engine DESCRIBE `t3` 2017-02-27 09:10:00,936 INFO sqlalchemy.engine.base.Engine {} 2017-02-27 09:10:00,938 INFO sqlalchemy.engine.base.Engine DESCRIBE `t1` 2017-02-27 09:10:00,938 INFO sqlalchemy.engine.base.Engine {} 2017-02-27 09:10:00,941 INFO sqlalchemy.engine.base.Engine SHOW FULL TABLES FROM `test` 2017-02-27 09:10:00,942 INFO sqlalchemy.engine.base.Engine {} [u't1', u't2', u't3']
please try upgrading mysql-connector-python.
-
repo owner - changed status to closed
insufficient information, please reopen if you can provide more detail
- Log in to comment