sqlite3和python:获取主键和外键的列表

时间:2019-01-29 02:21:39

标签: python-2.7 sqlite foreign-keys primary-key

我对sql还是python的中级很陌生。使用sqlite3,如何在数据库中获取主键和外键(每个表)的print()列表?

使用Python2.7,SQLite3,PyCharm。

sqlite3.version = 2.6.0

sqlite3.sqlite_version = 3.8.11

另外请注意:设置数据库时,我启用了FK,如下所示:

conn = sqlite3.connect(db_file)
conn.execute('pragma foreign_keys=ON')

我尝试了以下操作:

conn=sqlite3.connect(db_path)
print(conn.execute("PRAGMA table_info"))
print(conn.execute("PRAGMA foreign_key_list"))

哪个返回:

<sqlite3.Cursor object at 0x0000000002FCBDC0>
<sqlite3.Cursor object at 0x0000000002FCBDC0>

我还尝试了以下操作,但不打印任何内容(但我认为这可能是因为这是一个具有表和字段但没有记录的虚拟数据库):

conn=sqlite3.connect(db_path)
rows = conn.execute('PRAGMA table_info')
for r in rows:
    print r
rows2 = conn.execute('PRAGMA foreign_key_list')
for r2 in rows2:
    print r2

2 个答案:

答案 0 :(得分:0)

SELECT 
    name
FROM 
    sqlite_master 
WHERE 
    type ='table' AND 
name NOT LIKE 'sqlite_%';

此sql将显示数据库中的所有表,对于每个运行SQL PRAGMA table_info(your_table_name);的表,您都可以获取该表的主键。

这些图片显示了我数据库中的sql结果:  first sql result second sql result

答案 1 :(得分:0)

未知或格式不正确的PRAGMA语句将被忽略。

您的PRAGMA的问题是表名丢失。您必须获取所有表的列表,然后为每个表执行这些PRAGMA:

$('.flexslider').flexslider({
  animation: "slide",
  controlNav: false,
});