2012-03-09 93 views
11

命令「pragma table_info('tablename')」列出了外鍵的列信息和「pragma foreign_key_list('tablename')」。 如何顯示錶格的其他約束(檢查,唯一)? 只解析表「sqlite_master」的字段「sql」?有沒有辦法在SQLite中獲取表的約束?

+2

還有 「語法索引 - 目錄( '表名')」 見http://www.sqlite.org /pragma.html#pragma_index_list – Nabab 2013-02-13 01:02:01

+0

@Nabab您應該真的考慮將其添加爲答案 – 2013-10-26 20:36:23

回答

6

我認爲唯一的辦法就是這樣做,就是你建議的方式,解析sqlite_master數據庫的sql列。

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) 
相關問題