数据库管理智能体接手数据库时,先盘点真实结构。让AI看一份旧文档可能会编出已经删除的字段;先从数据库读取列信息,再比较约定清单。
需要让AI理解数据库结构的开发者。本文使用 Python 3.11 或以上版本的标准库,先验证一组人工构造的小样本。AI 负责提出实现或解释差异,结果由本地检查决定;这里没有把模型回答当成真实运行结果。

核对真实表结构与字段约定前,先定规则
示例固定records表,预期id/name,真实表多了version。输出extra说明文档或契约需要复核,不自动删列。
对象名称不是普通值参数,不能把模型生成的表名直接拼接SQL。这里PRAGMA语句完全固定。
PRAGMA table_info不展示所有数据库级对象,也不完整覆盖索引、触发器和外键;标题只承诺字段盘点。
给 AI 的输入要包含什么
把下面这份输入说明和你的实际样本一起交给可用的 AI 编程助手。示例只含虚构数据;对真实材料先去除账号凭据和个人信息。
只读盘点固定records表:PRAGMA table_info,取列名、声明类型、notnull、主键标志,与预期id/name比较missing和extra。不要ALTER/DROP,不把文档差异直接当数据库错误。
要求模型保留检查条件,并把它认为缺少的业务定义列出来。若回答改变了输入字段、忽略异常分支或直接删除原材料,先要求修正,再运行。提示词的作用是缩小任务范围,验收仍以代码和数据为准。
保存并运行最小验证程序
下方程序把关键规则和验证用例放在同一个可复跑示例中,便于先理解输入如何变成输出,再用它检查 AI 给出的实现。
新建一个空目录,把下面代码保存为 check.py,在该目录打开终端,运行 python -X utf8 check.py。代码自带示例输入,不需要安装第三方库。
import sqlite3
db=sqlite3.connect(':memory:')
db.execute('create table records(id text primary key, name text not null, version integer not null)')
info=db.execute('pragma table_info(records)').fetchall()
actual={row[1] for row in info};expected={'id','name'}
missing=sorted(expected-actual);extra=sorted(actual-expected)
assert missing==[] and extra==['version']
print('columns',[{'name':r[1],'type':r[2],'notnull':r[3],'pk':r[5]} for r in info])
print('missing',missing,'extra',extra)
assert db.execute('select count(*) from records').fetchone()[0]==0
怎样判断结果符合要求
missing为空,extra为version。数据库未插入或删改记录,差异报告供AI与负责人讨论。
下方是这份最小示例在本地执行得到的输出。它验证示例程序与断言的关系,不代表任何 AI 模型一次就能生成同样代码,也不构成性能或生产可靠性结论。
columns [{'name': 'id', 'type': 'TEXT', 'notnull': 0, 'pk': 1}, {'name': 'name', 'type': 'TEXT', 'notnull': 1, 'pk': 0}, {'name': 'version', 'type': 'INTEGER', 'notnull': 1, 'pk': 0}]
missing [] extra ['version']
主键标志与notnull标志是不同字段,SQLite普通表的特殊NULL语义要结合约束文档。
声明类型不说明所有存量值都符合类型,需要另做数据检查。
哪些失败必须停下来处理
隐藏列与生成列需要table_xinfo等更合适的入口,本例不宣称覆盖完整schema。
外部数据库使用其官方系统目录查询,不能套SQLite PRAGMA。
接入自己的任务前再核对一次
把结构快照时间、数据库版本与哈希交给AI,让它只依据实际字段给建议。
任何迁移另走项目已有备份、版本控制与回归,不从盘点直接自动执行。
资料与适用范围
SQLite可通过PRAGMA table_info读取表列信息;对象名来源需由开发者固定。以下链接核对于 2026-10-03;运行环境及额外依赖按本文前述说明。
相关基础可阅读 AI 生成 SQL 怎么用?从表结构写出查询,再在 SQLite 中验证。本文的重点是核对真实表结构与字段约定,可以把两项检查作为不同步骤保留。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33430.html