2012-03-09 5 views
11

「pragma table_info( 'tablename')」というコマンドは、列情報と外部キー「pragma foreign_key_list( 'tablename')」をリストします。 テーブルの他の制約(チェック、一意)を表示するにはどうすればよいですか? テーブル "sqlite_master"の "sql"フィールドのみを解析しますか?SQLiteでテーブルの制約を取得する方法はありますか?

+2

を参照してください。 /pragma.html#pragma_index_list – Nabab

+0

@Nababあなたは本当にそれを答えとして追加することをお勧めします –

答えて

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) 
3

pragma index_list('tablename')

もありますが、 "プラグマindex_list( 'テーブル名')" を参照してくださいhttp://www.sqlite.orgもありますhttp://sqlite.org/pragma.html#pragma_index_list

+7

すべてのインデックスが制約ではなく、すべての制約がインデックスであるとは限りません。 –

関連する問題