2012-03-09 23 views
11

El comando "pragma table_info ('tablename')" enumera la información de las columnas y "pragma foreign_key_list ('tablename')" las claves foráneas. ¿Cómo puedo mostrar otras restricciones (verificación, único) de una tabla? ¿Solo se analiza el campo "sql" de la tabla "sqlite_master"?¿Hay alguna manera de obtener las restricciones de una tabla en SQLite?

+2

También hay "index_list Pragma ('nombre de tabla')" Ver http://www.sqlite.org /pragma.html#pragma_index_list – Nabab

+0

@Nabab realmente debería considerar agregar eso como una respuesta –

Respuesta

6

Creo que la única manera es hacer esto es la forma en que sugirió, analizar la columna sql de la base de datos sqlite_master.

código

Python para hacer esto:

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) 
Cuestiones relacionadas