summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/sqlite
diff options
context:
space:
mode:
authorPhillip Cloud <cpcloud@gmail.com>2018-07-16 10:10:55 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2018-07-18 10:48:27 -0400
commit893eac06e511f3765c0c89bab76d7933d83ffccc (patch)
tree440d7b625e6dfcc505d42b16a721395a50bf480d /lib/sqlalchemy/dialects/sqlite
parentfb377229cd4c4e503bde9c44b78d30ad48f3cf7e (diff)
downloadsqlalchemy-893eac06e511f3765c0c89bab76d7933d83ffccc.tar.gz
Fix quoting schemas in _get_table_sql for the SQLite backend
Fixed issue where the "schema" name used for a SQLite database within table reflection would not quote the schema name correctly. Pull request courtesy Phillip Cloud. Change-Id: I2770788c1f094a7743209250ec26b5ef5fb2d9e8 Pull-request: https://github.com/zzzeek/sqlalchemy/pull/463
Diffstat (limited to 'lib/sqlalchemy/dialects/sqlite')
-rw-r--r--lib/sqlalchemy/dialects/sqlite/base.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/sqlalchemy/dialects/sqlite/base.py b/lib/sqlalchemy/dialects/sqlite/base.py
index c6932be8f..cc17b6c9b 100644
--- a/lib/sqlalchemy/dialects/sqlite/base.py
+++ b/lib/sqlalchemy/dialects/sqlite/base.py
@@ -1567,20 +1567,25 @@ class SQLiteDialect(default.DefaultDialect):
@reflection.cache
def _get_table_sql(self, connection, table_name, schema=None, **kw):
+ if schema:
+ schema_expr = "%s." % (
+ self.identifier_preparer.quote_identifier(schema))
+ else:
+ schema_expr = ""
try:
s = ("SELECT sql FROM "
" (SELECT * FROM %(schema)ssqlite_master UNION ALL "
" SELECT * FROM %(schema)ssqlite_temp_master) "
"WHERE name = '%(table)s' "
"AND type = 'table'" % {
- "schema": ("%s." % schema) if schema else "",
+ "schema": schema_expr,
"table": table_name})
rs = connection.execute(s)
except exc.DBAPIError:
s = ("SELECT sql FROM %(schema)ssqlite_master "
"WHERE name = '%(table)s' "
"AND type = 'table'" % {
- "schema": ("%s." % schema) if schema else "",
+ "schema": schema_expr,
"table": table_name})
rs = connection.execute(s)
return rs.scalar()