Python sqlite3 查询操作与结果字段获取详解
本文详细解析 Python 中使用 sqlite3 进行数据库查询的方法。重点介绍如何通过查询 sqlite_master 表获取所有表名,利用 PRAGMA table_info 获取指定表的字段信息,并通过 Python 代码示例演示如何同时获取 SQL 查询结果及其对应的列名,为数据库操作提供实用参考。
本文深入解析 Python 中 sqlite3 模块的查询操作流程,并通过具体示例代码展示关键步骤,旨在为读者在学习或实际工作中处理 SQLite 数据库查询提供具有参考价值的指导。
主要记录执行 SQL 查询操作的方法,以及如何从查询结果中提取对应的列字段名称。
获取 SQLite 数据库表结构与字段信息
1. 在 sqlite3 中获取所有表名及各表字段名的操作方法
SQLite 数据库内部维护着一个名为 sqlite_master 的特殊系统表,用于存储数据库对象的结构信息,该表的具体结构定义如下:
CREATE TABLE sqlite_master (
type TEXT,
name TEXT,
tbl_name TEXT,
rootpage INTEGER,
sql TEXT
);
通过直接查询 sqlite_master 表,可以获取数据库中所有已创建表的详细信息。

SELECT * FROM sqlite_master WHERE type='table';
若要查询某张特定表的所有字段信息,可使用以下方法:
PRAGMA table_info(表名);
示例:
PRAGMA table_info(sqlite_sequence);
Python 中获取查询结果与列名
2. 在 Python 中操作 sqlite3,获取 SQL 查询结果及对应列名的具体实现方法
class DBOperate(object):
"""
数据库操作类
"""
def __init__(self, db_file_path):
# 连接 sqlite db
# 关于commit(),如果isolation_level隔离级别默认,那么每次对数据库的操作,都需要使用该命令,
# 设置 isolation_level=None,变为自动提交模式
self._db_file_path = db_file_path
self.conn = sqlite3.connect(self._db_file_path, check_same_thread=False, isolation_level=None, timeout=1000)
# 创建游标
self.cur = self.conn.cursor()
def queryall(self, sql):
"""
查询所有的数据及对应的列名
:param sql:
:return:
"""
self.cur.execute(sql)
# TODO 获取查询结果的列名
columns_tuple = self.cur.description
# columns_tuple示例: (('TACHE_NAME', None, None, None, None, None, None), ('avgtime', None, None, None, None, None, None), ('DATE', None, None, None, None, None, None), ('ANALYSIS_TIME', None, None, None, None, None, None))
columns_list = [field_tuple[0] for field_tuple in columns_tuple]
# TODO 获取查询结果
query_result = self.cur.fetchall()
self.cur.close()
return query_result, columns_list
def close(self):
"""
关闭数据库连接
:return:
"""
if self.cur is not None:
self.cur.close()
if self.conn is not None:
self.conn.close()
以上内容为本文的全部分享,希望能为读者的学习带来帮助,同时也欢迎对本站内容给予支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









