summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/sqlite/base.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-09-17 15:16:33 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-09-17 15:16:33 -0400
commit7864f80a62ee17fc6d31c7531b179685d097dd98 (patch)
tree62e96923d80fff4d754883f6e521aab1a402884e /lib/sqlalchemy/dialects/sqlite/base.py
parentcb23fa243f5138aac7acb2a134d567f1a297d42e (diff)
parent9d402e204d77da680472cbfb9813e437eb187944 (diff)
downloadsqlalchemy-7864f80a62ee17fc6d31c7531b179685d097dd98.tar.gz
Merge branch 'sqlite-temp-table-reflection' of https://bitbucket.org/jerdfelt/sqlalchemy/branch/sqlite-temp-table-reflection into pr31
Diffstat (limited to 'lib/sqlalchemy/dialects/sqlite/base.py')
-rw-r--r--lib/sqlalchemy/dialects/sqlite/base.py28
1 files changed, 18 insertions, 10 deletions
diff --git a/lib/sqlalchemy/dialects/sqlite/base.py b/lib/sqlalchemy/dialects/sqlite/base.py
index b0bf670a6..817834b7d 100644
--- a/lib/sqlalchemy/dialects/sqlite/base.py
+++ b/lib/sqlalchemy/dialects/sqlite/base.py
@@ -1094,16 +1094,24 @@ class SQLiteDialect(default.DefaultDialect):
@reflection.cache
def get_unique_constraints(self, connection, table_name,
schema=None, **kw):
- UNIQUE_SQL = """
- SELECT sql
- FROM
- sqlite_master
- WHERE
- type='table' AND
- name=:table_name
- """
- c = connection.execute(UNIQUE_SQL, table_name=table_name)
- table_data = c.fetchone()[0]
+ try:
+ s = ("SELECT sql FROM "
+ " (SELECT * FROM sqlite_master UNION ALL "
+ " SELECT * FROM sqlite_temp_master) "
+ "WHERE name = '%s' "
+ "AND type = 'table'") % table_name
+ rs = connection.execute(s)
+ except exc.DBAPIError:
+ s = ("SELECT sql FROM sqlite_master WHERE name = '%s' "
+ "AND type = 'table'") % table_name
+ rs = connection.execute(s)
+ row = rs.fetchone()
+ if row is None:
+ # sqlite won't return the schema for the sqlite_master or
+ # sqlite_temp_master tables from this query. These tables
+ # don't have any unique constraints anyway.
+ return []
+ table_data = row[0]
UNIQUE_PATTERN = 'CONSTRAINT (\w+) UNIQUE \(([^\)]+)\)'
return [