命令「pragma table_info('tablename')」列出了外鍵的列信息和「pragma foreign_key_list('tablename')」。 如何顯示錶格的其他約束(檢查,唯一)? 只解析表「sqlite_master」的字段「sql」?有沒有辦法在SQLite中獲取表的約束?
11
A
回答
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')
+7
並非所有索引都是約束,並非所有約束都是索引。 – 2013-10-27 09:15:09
相關問題
- 1. 有沒有辦法加快SQLite獲取?
- 2. 有沒有辦法在Objective-C中獲取SQLite中的表的大小?
- 3. 有沒有辦法在db2 v7中啓用/禁用約束?
- 4. 有沒有辦法使用Z3來獲取涉及集合的約束模型?
- 5. 有沒有辦法在pgsql中捕獲延遲約束的異常?
- 6. 有沒有辦法在TinkerGraph上定義模式約束?
- 7. 獲取有關約束
- 8. 有沒有辦法將一個類型參數約束爲SqlDbType?
- 9. 有沒有辦法在SQLITE中獲取視圖的列數據類型?
- 10. 有沒有辦法在oracle中禁用/啓用未命名的約束?
- 11. 有沒有辦法在Gemfile中自動添加缺少的版本約束?
- 12. 有沒有什麼辦法在SQLite中標記一個表?
- 13. 在刪除行之前,有沒有辦法在MySql中檢查約束違規?
- 14. 有沒有辦法獲取API來反應js中的表?
- 15. 有沒有辦法從表中獲取不同的PartionKeys
- 16. 有沒有辦法來獲取手機
- 17. 有沒有辦法在RAML中標記方法的結束?
- 18. 有沒有辦法組織自動佈局定位約束列表?
- 19. Crystal Reports:有沒有辦法在子報表中有效地獲取子報表?
- 20. 有沒有辦法在spritekit中讀取/獲取fps swift
- 21. 有沒有辦法記錄SQLite查詢?
- 22. 有沒有辦法在c#中動態獲取方法名?
- 23. 有沒有辦法在PHP SDK中從Parse獲取所有類?
- 24. 有沒有辦法在NSUserDefaults中獲取所有值?
- 25. 有沒有辦法在大於900字節的列上創建唯一約束?
- 26. 有沒有辦法在java中獲取數組的名稱?
- 27. 有沒有辦法在javascript中獲取返回值的類型?
- 28. 有沒有辦法在視圖中獲取插入的縮進?
- 29. 有沒有辦法在Winforms TabControl中獲取TabPage的邊界?
- 30. 有沒有辦法在openpyxl中獲取工作簿的名稱
還有 「語法索引 - 目錄( '表名')」 見http://www.sqlite.org /pragma.html#pragma_index_list – Nabab 2013-02-13 01:02:01
@Nabab您應該真的考慮將其添加爲答案 – 2013-10-26 20:36:23