From 07ef7121aea88e8d2a9ce09c91f99c2b795b9351 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 25 Jan 2007 01:37:15 +0000 Subject: [PATCH] - fix to reflection on older DB's that might return array() type for "show variables like" statements --- CHANGES | 3 +++ lib/sqlalchemy/databases/mysql.py | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 32945649a7..dc47d49787 100644 --- a/CHANGES +++ b/CHANGES @@ -10,6 +10,9 @@ table PK if not applicable, i.e. for a UNION. checking for DISTINCT, GROUP BY (other places that rowid is invalid) still a TODO. allows polymorphic mappings to function, [ticket:436] +- mysql: + - fix to reflection on older DB's that might return array() type for + "show variables like" statements 0.3.4 - general: diff --git a/lib/sqlalchemy/databases/mysql.py b/lib/sqlalchemy/databases/mysql.py index aee26a405d..d30751fb4d 100644 --- a/lib/sqlalchemy/databases/mysql.py +++ b/lib/sqlalchemy/databases/mysql.py @@ -10,6 +10,7 @@ from sqlalchemy import sql,engine,schema,ansisql from sqlalchemy.engine import default import sqlalchemy.types as sqltypes import sqlalchemy.exceptions as exceptions +from array import array try: import MySQLdb as mysql @@ -338,7 +339,11 @@ class MySQLDialect(ansisql.ANSIDialect): def reflecttable(self, connection, table): # reference: http://dev.mysql.com/doc/refman/5.0/en/name-case-sensitivity.html - case_sensitive = int(connection.execute("show variables like 'lower_case_table_names'").fetchone()[1]) == 0 + cs = connection.execute("show variables like 'lower_case_table_names'").fetchone()[1] + if isinstance(cs, array): + cs = cs.tostring() + case_sensitive = int(cs) == 0 + if not case_sensitive: table.name = table.name.lower() table.metadata.tables[table.name]= table -- 2.47.2