Il comando "pragma table_info ('tablename')" elenca le informazioni sulle colonne e "pragma foreign_key_list ('tablename')" le chiavi esterne. Come posso visualizzare altri vincoli (controllo, unico) di una tabella? Analizza solo il campo "sql" della tabella "sqlite_master"?C'è un modo per ottenere i vincoli di una tabella in SQLite?
11
A
risposta
6
Penso che l'unico modo per farlo sia il modo in cui hai suggerito, analizzare la colonna sql del database sqlite_master.
codicePython per fare questo:
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
C'è anche pragma index_list('tablename')
+7
Non tutti gli indici sono vincoli e non tutti i vincoli sono indici. –
C'è anche "pragma index_list ('tablename')" Vedi http://www.sqlite.org /pragma.html#pragma_index_list – Nabab
@Nabab si dovrebbe considerare di aggiungere una risposta come –