¿Hay alguna forma de obtener las restricciones de una tabla en SQLite?

El comando pragma table_info('tablename') lists the columns information and pragma foreign_key_list('tablename') the foreign keys. How can I display other constraints (check, unique) of a table? Only parsing the field "sql" of the table "sqlite_master"?

preguntado el 09 de marzo de 12 a las 14:03

There's also "pragma index_list('tablename')" See sqlite.org/pragma.html#pragma_index_list -

@Nabab you should really consider adding that as an answer -

2 Respuestas

I think the only way is to do this is the way you suggested, parse the sql column of the sqlite_master database.

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)

Respondido 27 ago 12, 14:08

También hay pragma index_list('tablename')

Vea http://sqlite.org/pragma.html#pragma_index_list

Respondido 27 Oct 13, 01:10

Not all indexes are constraints, and not all constraints are indexes. - CL.

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.