Есть ли способ получить ограничения таблицы в SQLite? - PullRequest
14 голосов
/ 09 марта 2012

Команда "pragma table_info ('tablename')" выводит информацию о столбцах и "pragma foreign_key_list ('tablename')" внешние ключи. Как я могу отобразить другие ограничения (проверить, уникальные) таблицы? Разбор только поля "sql" таблицы "sqlite_master"?

Ответы [ 2 ]

8 голосов
/ 27 августа 2012

Я думаю, что единственный способ сделать это - то, как вы предложили, проанализировать столбец sql базы данных sqlite_master.

Python-код для этого:

import sqlite3

con = sqlite3.connect("example.sqlite3")
cur = con.cursor()
cur.execute("select sql from sqlite_master where type='table' and name='example_table'")
schema = cur.fetchone()
con.close()

entries = [ tmp.strip() for tmp in schema[0].splitlines() if tmp.find("constraint")>=0 or tmp.find("unique")>=0 ]
for i in entries: print(i)
3 голосов
/ 27 октября 2013

Там также pragma index_list('tablename')

См. http://sqlite.org/pragma.html#pragma_index_list

...