1. 为什么我建议你用 SQLite 练手数据库
如果你刚开始接触数据库,SQLite 大概是门槛最低的选择。它不需要你装 MySQL 服务、配端口、设密码,一个.db文件就是整个数据库。Python 标准库自带sqlite3模块,导入就能用,特别适合拿来练建表、增删改查这些基础动作。
但零基础的人往往卡在两个地方:一是 SQL 语句写不对,报错看不懂;二是写完不知道结果对不对,只能靠肉眼一行行核对。我试过更省事的做法——让 AI 帮我生成 SQL,再在本地 SQLite 里跑一遍验证。问题在于,很多 AI 工具的 Key 分散在不同平台,配置起来比写 SQL 还麻烦。
这篇就解决这个组合场景:用 TaoToken 统一 Key 接入 AI 通道,让 AI 生成 SQL,再落到本地 SQLite 执行比对。全程你只需要一个 Key、一份settings.json、一个 Python 文件。适合完全没碰过数据库、但想快速跑通「AI 生成 + 本地验证」闭环的读者。
核心检索词先摆出来:SQLite 是什么?它是一个嵌入式关系型数据库,数据存在单个文件里,无需独立服务器进程。能做什么?建库建表、增删改查、事务提交。适合谁?零基础学 SQL、做本地小工具、写脚本存数据的人。
2. TaoToken 前置准备:一个 Key 打通 AI 通道
TaoToken 在这里扮演的角色是「统一入口」。你不需要为每个 AI 能力单独申请账号、记多套密钥,而是拿一个统一 Key,通过它的 API 通道调用模型对话能力。对 SQLite 这个场景来说,你需要的只是「让 AI 根据自然语言描述生成 SQL 语句」这一件事。
先做两件准备:
第一,注册并拿到 Key。访问官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 完成账号流程,然后进控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,Key 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。创建后复制那串sk-开头的字符串,后面配置要用。
第二,确认 API 通道地址。TaoToken 的 API 基址是 https://taotoken.net/api ,注意这个地址不带 UTM 参数,直接写进配置即可。模型对话能力走的是兼容接口,你在settings.json里填好 base_url 和 key,客户端就能把请求发出去。
注意:Key 只存在本地配置文件里,不要提交到 Git 仓库,也不要贴到公开聊天窗口。泄露了就去控制台吊销重发。
如果你后续要做长期编码或 Agent 类任务,可以了解 Coding Plan(https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite );单纯验证模型输出效果,用模型对话页(https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite )即可。本篇聚焦 SQL 生成,用统一 Key 就够。
3. 可复制配置:settings.json 骨架与 SQLite 建表脚本
这一节给你两份可直接复制的文件。第一份是settings.json,负责把 TaoToken 的统一 Key 和 API 通道接进来;第二份是 Python 脚本,负责建库建表并留出执行 AI 生成 SQL 的入口。
3.1 settings.json 配置骨架
{ "ai_provider": { "name": "taotoken", "base_url": "https://taotoken.net/api", "api_key": "sk-你的TaoToken密钥", "model": "claude-sonnet-4-20250514", "timeout": 30 }, "sqlite": { "db_file": "students.db", "echo_sql": true } }字段说明用表格对照更清楚:
| 字段 | 作用 | 填写要点 |
|---|---|---|
| base_url | API 通道地址 | 固定为 https://taotoken.net/api |
| api_key | 统一 Key | 控制台创建,sk- 开头 |
| model | 调用的模型名 | 按控制台可用列表填 |
| timeout | 请求超时秒数 | 网络慢可调到 60 |
| db_file | SQLite 文件名 | 不存在会自动创建 |
| echo_sql | 是否打印 SQL | 调试阶段建议 true |
把这份文件保存到项目根目录,命名settings.json。Python 脚本读取它,就能拿到 Key 和通道地址,不用把密钥硬编码在代码里。
3.2 建表与查询示例 SQL
SQLite 的建表语句和标准 SQL 高度兼容。下面这段创建一个学生表,字段包含主键、姓名、年龄、成绩等级:
CREATE TABLE IF NOT EXISTS students ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, grade TEXT );插入三条数据,用?占位符传参,避免 SQL 注入:
INSERT INTO students (name, age, grade) VALUES (?, ?, ?);查询全部记录:
SELECT * FROM students;更新指定记录:
UPDATE students SET grade = ? WHERE name = ?;删除指定记录:
DELETE FROM students WHERE name = ?;这几条就是 SQLite 最核心的增删改查骨架。你不需要背,后面让 AI 根据你的自然语言描述生成,再本地跑一遍验证即可。
3.3 Python 脚本:读取配置 + 建表 + 执行 SQL
import json import sqlite3 import requests # 1. 读取配置 with open("settings.json", "r", encoding="utf-8") as f: cfg = json.load(f) ai = cfg["ai_provider"] db_file = cfg["sqlite"]["db_file"] # 2. 连接 SQLite(不存在则自动创建) conn = sqlite3.connect(db_file) cur = conn.cursor() # 3. 建表 cur.execute(""" CREATE TABLE IF NOT EXISTS students ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, grade TEXT ) """) conn.commit() print("建表完成,数据库文件:", db_file) # 4. 调用 TaoToken 让 AI 生成 SQL def ask_ai_for_sql(question): headers = { "Authorization": f"Bearer {ai['api_key']}", "Content-Type": "application/json" } payload = { "model": ai["model"], "messages": [ {"role": "system", "content": "你是 SQLite SQL 生成助手,只输出一条可执行的 SQL 语句,不要解释。"}, {"role": "user", "content": question} ] } resp = requests.post( f"{ai['base_url']}/v1/chat/completions", headers=headers, json=payload, timeout=ai["timeout"] ) resp.raise_for_status() return resp.json()["choices"][0]["message"]["content"].strip() # 5. 示例:让 AI 生成插入语句 sql = ask_ai_for_sql("向 students 表插入一条记录,姓名 Alice,年龄 20,成绩 A") print("AI 生成的 SQL:", sql) # 6. 本地执行并提交 cur.execute(sql) conn.commit() # 7. 查询验证 cur.execute("SELECT * FROM students") rows = cur.fetchall() for row in rows: print(row) conn.close()这段脚本把「配置读取 → 建表 → AI 生成 SQL → 本地执行 → 查询比对」串成了一条线。你只需要改ask_ai_for_sql里的自然语言描述,就能生成不同的 SQL。
4. 三步验证:配置写入、AI 生成、本地执行比对
配置和脚本都齐了,接下来按三步走一遍,确认整条链路通。
4.1 第一步:写入配置并检查连通
把settings.json放到脚本同目录,确认api_key已替换成你自己的。然后先跑一个最小连通测试,不涉及 SQLite,只验证 TaoToken 通道能不能通:
import json, requests with open("settings.json", "r", encoding="utf-8") as f: cfg = json.load(f) ai = cfg["ai_provider"] headers = {"Authorization": f"Bearer {ai['api_key']}"} resp = requests.get(f"{ai['base_url']}/v1/models", headers=headers, timeout=30) print("状态码:", resp.status_code) print("返回:", resp.text[:300])如果状态码是 200,说明 Key 和通道地址都对。如果返回 401,检查 Key 是否复制完整;返回 404,检查 base_url 是否写成了带路径的地址。
4.2 第二步:让 AI 生成 SQL
连通之后,用自然语言描述你的需求。比如「查询年龄大于 20 的学生姓名和成绩」,AI 应该返回类似:
SELECT name, grade FROM students WHERE age > 20;再比如「把 Bob 的成绩改成 A+」,返回:
UPDATE students SET grade = 'A+' WHERE name = 'Bob';这里有个实用技巧:在 system 提示里明确「只输出一条可执行 SQL,不要解释」,能避免 AI 返回带 markdown 代码块的文本,省去你手动清理的步骤。
4.3 第三步:本地执行并比对结果
拿到 SQL 后,直接丢给cur.execute()执行。写操作记得conn.commit(),查询操作不用。执行完用fetchall()拿结果,和你的预期比对。
比如你先插入了 Alice、Bob、Charlie 三条记录,然后让 AI 生成「删除 Charlie」的 SQL,执行后再查全表,应该只剩两条。如果结果不对,先看 SQL 有没有 WHERE 条件写错,再看是否忘了 commit。
提示:调试阶段把
echo_sql设为 true,每次执行前打印 SQL,方便定位是哪条语句出的问题。
5. 本篇常见错排查
零基础跑这套流程,最容易踩的坑集中在下面几个。
报错sqlite3.OperationalError: no such table: students说明建表语句没执行成功,或者你连的数据库文件不对。检查db_file路径,确认建表那步的conn.commit()有没有执行。SQLite 里建表也需要提交。
报错sqlite3.IntegrityError: NOT NULL constraint failed插入数据时某个非空字段传了 None。检查你的 INSERT 语句字段和值是否一一对应,name字段设了NOT NULL,就不能插空值。
AI 返回的 SQL 带 markdown 代码块比如返回sql ...这种。原因是 system 提示没约束好。在提示里加一句「不要使用 markdown 代码块,只输出纯 SQL 文本」,或者在代码里做字符串清洗,去掉首尾的反引号和sql标记。
请求返回 401 或 403Key 无效或没权限。去控制台确认 Key 状态,检查Authorization头是不是Bearer sk-xxx格式,中间有没有多余空格。
请求超时网络波动或模型响应慢。把timeout从 30 调到 60,或者换一个响应更快的模型。如果持续超时,检查 base_url 是否写成了https://taotoken.net/api/带尾斜杠,有些客户端对尾斜杠敏感。
执行 UPDATE 或 DELETE 后数据没变忘了conn.commit()。SQLite 默认开启事务,写操作不提交不会落盘。查询和建表不需要 commit,但增删改必须提交。
中文写入后查询乱码SQLite 默认用 UTF-8 存储,Python 的sqlite3也默认 UTF-8。如果出现乱码,检查你的源文件编码和终端编码是否一致,脚本开头加# -*- coding: utf-8 -*-通常能解决。
6. 把 AI 生成和本地验证固化成习惯
跑通一次之后,你可以把这套流程固化成日常习惯:遇到不会写的 SQL,先描述需求让 AI 生成,再本地执行验证。SQLite 的好处是试错成本极低,删了.db文件重来就行,不用担心搞坏线上数据。
如果你想把 AI 能力接到更长期的编码任务里,比如让 Agent 自动生成并执行 SQL 脚本,可以看 Coding Plan(https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite )。单纯想验证不同模型生成 SQL 的质量差异,用模型对话页(https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite )切换模型对比即可。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,遇到接口参数问题可以查。
最后留一个我常用的调试动作:每次让 AI 生成 SQL 后,先不急着执行,而是把 SQL 打印出来读一遍,确认 WHERE 条件、字段名、表名都对,再丢给cur.execute()。这个习惯能帮你挡掉大部分「执行了但结果不对」的问题。