You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SQLite3中获取列的NOT NULL约束信息?

如何获取SQLite表的NOT NULL约束信息

嘿,别慌!这个问题其实超容易解决的😉 我们先搞清楚SQLite的PRAGMA table_info()语句返回的内容,然后就能轻松拿到NOT NULL约束的标记了。

先搞懂PRAGMA table_info的返回值

当你执行PRAGMA table_info(表名)时,SQLite会返回每一列的详细信息,每一行是一个元组,其中和我们需求相关的几个索引是:

  • 索引1:列名称(就是你已经在提取的d[1])
  • 索引2:列数据类型(你提取的d[2])
  • 索引3:NOT NULL约束标记——这个就是你要找的!它的取值是1(表示该列有NOT NULL约束)或者0(表示没有)

修改你的代码来获取NOT NULL约束

我帮你调整了代码,不仅保留了你原来的列名和类型,还新增了NOT NULL的判断,而且把结果整理成更易读的字典列表形式,方便你后续使用:

import sqlite3  # 记得要导入sqlite3哦,原代码里好像漏了这个依赖

def get_columns(obj):
    con = sqlite3.connect('mydatabase.db')
    with con:
        cur = con.cursor()
        # 用f-string拼接SQL语句,比直接+更安全,避免潜在的SQL注入风险
        sql_req = f'PRAGMA table_info({obj});'
        cur.execute(sql_req)
        data = cur.fetchall()
        
        # 准备列表分别存列名、类型、NOT NULL状态
        column_names = []
        column_types = []
        column_not_null = []
        
        for d in data:
            column_names.append(d[1])
            column_types.append(d[2])
            # 把0/1转成布尔值True/False,用起来更直观
            column_not_null.append(d[3] == 1)
        
        # 把信息整理成字典列表,后续调用时更清晰
        columns_info = []
        for name, col_type, is_not_null in zip(column_names, column_types, column_not_null):
            columns_info.append({
                'name': name,
                'type': col_type,
                'is_not_null': is_not_null
            })
        
        if columns_info:
            return (1, columns_info)

怎么使用这个函数?

你可以像这样调用它,就能看到每一列的约束情况了:

# 传入你的表名'exhibit'
status, columns = get_columns('exhibit')
if status == 1:
    for col in columns:
        print(f"列名: {col['name']}, 类型: {col['type']}, 是否必须非空: {col['is_not_null']}")

运行后,你会得到类似这样的输出:

列名: id, 类型: INTEGER, 是否必须非空: False
列名: name, 类型: TEXT, 是否必须非空: True
列名: text1, 类型: TEXT, 是否必须非空: True
... 其他列的信息

这样你就能轻松判断每一列是否带有NOT NULL约束啦!

内容的提问来源于stack exchange,提问作者user.student

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:59:50