将sqlite PRAGMA信息的输出解析成一个python列表
Parsing the output of sqlite PRAGMA information into a python list
我正在尝试使用 SQLite 命令收集有关列名的信息:
columnsQuery = ("PRAGMA table_info(%s)" % (table))
columnNames = cursor.execute(columnsQuery)
根据我所做的研究,执行此命令应该会为我提供给定 table 中的列名称。因为我没有现成的 sqlite 数据库,所以我不知道 PRAGMA 的输出是什么样的。有没有一种方法可以将变量 "columnNames" 解析为 Python 列名列表?
pragma 的输出有列和行,就像查询一样:
$ sqlite3
SQLite version 3.18.0 2017-02-11 14:59:58
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> create table t(id integer primary key, name text not null, date default current_date);
sqlite> .mode columns
sqlite> .header on
sqlite> pragma table_info(t);
cid name type notnull dflt_value pk
---------- ---------- ---------- ---------- ---------- ----------
0 id integer 0 1
1 name text 1 0
2 date 0 current_da 0
查询结果为4个值的元组列表如下:
[(0, 'id', 'INTEGER', 1, None, 1), ... ,]
以下代码可以打印所有列名:
columnsQuery = cursor.execute(f"pragma table_info('{table[0]}')")
columnInfos = cursor.fetchall()
columnNames = [item[1] for item in columnInfos]
我正在尝试使用 SQLite 命令收集有关列名的信息:
columnsQuery = ("PRAGMA table_info(%s)" % (table))
columnNames = cursor.execute(columnsQuery)
根据我所做的研究,执行此命令应该会为我提供给定 table 中的列名称。因为我没有现成的 sqlite 数据库,所以我不知道 PRAGMA 的输出是什么样的。有没有一种方法可以将变量 "columnNames" 解析为 Python 列名列表?
pragma 的输出有列和行,就像查询一样:
$ sqlite3 SQLite version 3.18.0 2017-02-11 14:59:58 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> create table t(id integer primary key, name text not null, date default current_date); sqlite> .mode columns sqlite> .header on sqlite> pragma table_info(t); cid name type notnull dflt_value pk ---------- ---------- ---------- ---------- ---------- ---------- 0 id integer 0 1 1 name text 1 0 2 date 0 current_da 0
查询结果为4个值的元组列表如下: [(0, 'id', 'INTEGER', 1, None, 1), ... ,]
以下代码可以打印所有列名:
columnsQuery = cursor.execute(f"pragma table_info('{table[0]}')")
columnInfos = cursor.fetchall()
columnNames = [item[1] for item in columnInfos]