summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/sqlite/base.py
diff options
context:
space:
mode:
authorDiana Clarke <diana.joan.clarke@gmail.com>2016-01-27 22:54:05 -0500
committerDiana Clarke <diana.joan.clarke@gmail.com>2016-01-27 22:54:05 -0500
commitb3b3c68a4a0899d2065df36bbb93363f20cebb93 (patch)
treeb99273c62b96d9b4c09eec91eeb17bca4b3820dc /lib/sqlalchemy/dialects/sqlite/base.py
parent5742e321b261c0c1303835b80418cd3cdc1b5643 (diff)
downloadsqlalchemy-b3b3c68a4a0899d2065df36bbb93363f20cebb93.tar.gz
sqlite: reflect primary key constraint names, fixes #3629
Diffstat (limited to 'lib/sqlalchemy/dialects/sqlite/base.py')
-rw-r--r--lib/sqlalchemy/dialects/sqlite/base.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/sqlite/base.py b/lib/sqlalchemy/dialects/sqlite/base.py
index 0e048aeff..3ab9022cc 100644
--- a/lib/sqlalchemy/dialects/sqlite/base.py
+++ b/lib/sqlalchemy/dialects/sqlite/base.py
@@ -1297,12 +1297,21 @@ class SQLiteDialect(default.DefaultDialect):
@reflection.cache
def get_pk_constraint(self, connection, table_name, schema=None, **kw):
+ table_data = self._get_table_sql(connection, table_name, schema=schema)
+
+ def parse_pk():
+ PK_PATTERN = 'CONSTRAINT (\w+) PRIMARY KEY'
+ result = re.search(PK_PATTERN, table_data, re.I)
+ return result.group(1) if result else None
+
cols = self.get_columns(connection, table_name, schema, **kw)
pkeys = []
for col in cols:
if col['primary_key']:
pkeys.append(col['name'])
- return {'constrained_columns': pkeys, 'name': None}
+
+ constraint_name = parse_pk() if table_data else None
+ return {'constrained_columns': pkeys, 'name': constraint_name}
@reflection.cache
def get_foreign_keys(self, connection, table_name, schema=None, **kw):