AI 生成 SQL 怎么用?从表结构写出查询,再在 SQLite 中验证

用表结构和清楚的业务口径让 AI 草拟 SQLite 查询,再在样例库与只读连接中逐项核对结果。

AI 可以根据表结构草拟 SQL,但不能替你确认业务口径。更稳妥的做法是先给出字段、少量脱敏样例和筛选条件,让它只生成 SELECT;先在小样本或只读连接里核对,再用于真实数据。

先准备输入:表结构和目标口径

假设有一张 orders 表,字段为 id、region、status、amount。需求是“统计已付款订单按地区汇总的金额,并从高到低排列”。把需求中的口径写完整:统计金额还是订单数、是否排除退款、日期区间按哪个时间字段、空地区怎么处理。不要把真实客户信息或密钥粘贴到第三方模型。

AI 生成 SQL 怎么用?从表结构写出查询,再在 SQLite 中验证

可复制的提问模板:

数据库是 SQLite。请只生成一条 SELECT 查询。
表:orders(id INTEGER, region TEXT, status TEXT, amount REAL)
需求:按 region 汇总 status='paid' 的 amount,并按总额降序。
不要猜测不存在的字段;先列出你采用的筛选口径,并说明 NULL region 的处理。

检查生成的 SQL 再运行

对于这个需求,查询可以写成:

SELECT region, SUM(amount) AS paid_total
FROM orders
WHERE status = 'paid'
GROUP BY region
ORDER BY paid_total DESC;

逐项对照需求:筛选条件是否只有已付款、汇总字段是否为金额、分组字段是否为地区、排序是否降序。特别检查模型有没有擅自加日期过滤、把订单数当成金额,或遗漏退款规则。遇到 JOIN 时,先确认关联键是否会把一笔订单重复展开。

在样例库和真实库分别验证

下面的演示数据是虚构的,用来手算核对 SQL:北区两笔已付款金额为 120 和 80,南区一笔待付款金额为 40。按上述筛选,结果应只有北区一行,总额为 200。

import sqlite3

con = sqlite3.connect(':memory:')
con.execute('CREATE TABLE orders (id INTEGER, region TEXT, status TEXT, amount REAL)')
con.executemany('INSERT INTO orders VALUES (?, ?, ?, ?)', [
    (1, '北区', 'paid', 120),
    (2, '北区', 'paid', 80),
    (3, '南区', 'pending', 40),
])
rows = con.execute("""SELECT region, SUM(amount) AS paid_total
FROM orders WHERE status = 'paid'
GROUP BY region ORDER BY paid_total DESC""").fetchall()
print(rows)  # [('北区', 200.0)]

接真实 SQLite 文件时可使用只读 URI,避免把验证脚本意外变成写库脚本:

import sqlite3

sql = """SELECT region, SUM(amount) AS paid_total
FROM orders WHERE status = 'paid'
GROUP BY region ORDER BY paid_total DESC"""
con = sqlite3.connect('file:report.db?mode=ro', uri=True)
rows = con.execute(sql).fetchall()

Python 的 sqlite3 文档说明了 URI 连接形式和只读 mode=ro。先检查查询结果的行数、总和与一两条人工抽样;结果不对时回到字段定义和业务口径修订提示词,不要直接改生产数据。

常见边界

  • 如果金额可能为空,先决定空值是否按 0 计算;不要让模型自行决定财务口径。
  • 表很大时先加有业务依据的时间范围,并通过数据库执行计划评估性能;不要为了“跑得快”删掉必要筛选。
  • 涉及 UPDATE、DELETE、DROP 或未知函数时停止执行,先在隔离副本验证。只读连接能降低写入风险,但不能替代权限控制和备份。

这套流程能检查查询是否符合给定的示例和字段定义,不能证明需求本身正确,也不能保证所有模型生成的 SQL 都安全或高效。

官方资料

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32352.html

赞 (0)
AI小管家的头像AI小管家
百度千帆怎么调用 DeepSeek?模型选择、API 请求与结果校验
上一篇 1小时前
AI 代码转换怎么做?先定义行为测试,再把 Python 函数迁移到 TypeScript
下一篇 1小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部