You need to enable JavaScript to run this app. 使用Python sqlite3模块如何将PRAGMA table_info()输出转为Pandas DataFrame
优惠活动
大模型
产品
解决方案
定价
更多

使用Python sqlite3模块如何将PRAGMA table_info()输出转为Pandas DataFrame

实现方案

最简方案:直接用Pandas读取PRAGMA查询

很多人误以为PRAGMA不属于标准SQL就不能被read_sql系列方法识别,实际上只要数据库驱动能返回带列名的结构化结果,pandas就可以正常解析。SQLite的驱动对PRAGMA查询会返回带标准列名的结果集,所以不需要手动处理fetchall()返回的元组结构,直接把PRAGMA语句传给read_sql_query就能生成和命令行结构一致的DataFrame。
示例代码:

import pandas as pd
import sqlite3

conn = sqlite3.connect("目标数据库文件路径.db")
# 直接传入PRAGMA查询语句即可
table_info_df = pd.read_sql_query("PRAGMA table_info('mytable')", conn)
conn.close()

生成的DataFrame列名完全对齐SQLite命令行的输出结构,依次为:

  • cid 字段序号
  • name 字段名
  • type 字段类型
  • notnull 非空约束标识(1代表是,0代表否)
  • dflt_value 字段默认值
  • pk 主键标识(1代表是,0代表否)

备选方案:手动构造DataFrame

如果已经通过原生sqlite3接口执行查询拿到了结果列表,可以手动指定固定列名生成DataFrame:

conn = sqlite3.connect("目标数据库文件路径.db")
info = conn.execute("PRAGMA table_info('mytable')").fetchall()
conn.close()

# 按照SQLite返回的固定列结构定义列名
columns = ["cid", "name", "type", "notnull", "dflt_value", "pk"]
table_info_df = pd.DataFrame(info, columns=columns)

实用提示

  • 该方法对其他返回结构化结果的PRAGMA语句同样有效,比如PRAGMA index_list('mytable')、PRAGMA foreign_key_list('mytable')都可以直接传给read_sql_query获取DataFrame
  • 动态传入表名时不要直接拼接字符串到查询语句中,避免SQL注入风险
  • 不需要对PRAGMA语句做特殊格式改造,写法和SQLite命令行里保持一致即可

内容的提问来源于stack exchange,提问作者a11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 13:45:03