Python标准库之sqlite3使用入门(一):用TaoToken统一Key跑通第一个数据库脚本

发布时间:2026/9/29 20:58:04
Python标准库之sqlite3使用入门(一):用TaoToken统一Key跑通第一个数据库脚本 1. 为什么初学者需要一个「统一 Key」的数据库脚本如果你刚开始学 Python大概率会遇到这样一个场景跟着教程写了几行sqlite3代码本地建库、建表、插入数据都跑通了心里挺爽。但下一步想接个大模型接口做点智能问答、文本处理问题就来了——不同厂商的 Key 格式不一样环境变量名不一样请求地址也不一样。脚本里到处散落着api_key、base_url改一个地方要翻三个文件。sqlite3是 Python 标准库自带的模块不用pip install直接import sqlite3就能用。它把整个数据库存成一个.db文件适合本地练习、小型工具、原型验证。而 TaoToken 做的事情是给你一个统一的 Key 和统一的 API 通道让你在脚本里只维护一份配置就能调用不同的大模型能力。这篇文章的目标很明确带你从零跑通一个最小闭环。你会拿到一份可复制的config.toml骨架和settings.json示例然后依次执行建表、插入、查询三步验证动作。跑完之后你的本地环境里会有一个真实的example.db文件同时你的调用链配置也已经就位后面想加模型对话、代码补全直接在这个骨架上扩展就行。适合谁看刚学完 Python 基础语法、想动手写点真东西的初学者手里有几个不同平台 Key、被配置管理搞烦的开发者以及想用sqlite3做本地数据缓存、又不想引入重型数据库的实践者。2. TaoToken 前置准备把 Key 和地址收拢到一处在写数据库脚本之前先把「调用通道」这件事理清楚。TaoToken 的官网入口是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 基础地址是https://taotoken.net/api。注意这两个地址的用途不同官网用来注册、查看文档、管理额度API 地址是脚本里真正发请求的地方。你需要做的第一件事是拿到一个 API Key。进入控制台后创建 Key复制出来先放到一边。这里有个习惯建议不要把 Key 硬编码进.py文件而是写进配置文件再用.gitignore排除掉。原因很简单一旦你把带 Key 的脚本传到公开仓库Key 就等于泄露了后面可能被人刷额度。TaoToken 的定位是统一 Key / API 通道也就是说你不需要在脚本里为每个模型单独写一套请求逻辑。对于本篇的sqlite3场景我们先把配置骨架搭好数据库部分照常跑模型调用部分留出接口。这样等你学完建表插入查询下一步接模型对话时只需要在同一个配置文件里加一段就行。如果你后面要做长期编码或者 Agent 类项目可以关注 Coding Plan 相关的入口如果只是想先验证模型能不能通模型对话页面更直接。但本篇的重点是数据库脚本所以先把 Key 和地址这两样东西准备好我们进入配置环节。3. 可复制配置config.toml 骨架与 settings.json 示例配置文件的作用是把「会变的东西」和「不变的代码」分开。下面这份config.toml骨架你可以直接复制到项目根目录改掉api_key那一行即可。# config.toml [app] name sqlite3-demo debug true [taotoken] api_key 把你的Key粘贴到这里 base_url https://taotoken.net/api timeout 30 [database] path example.db echo_sql false这份配置里[taotoken]段落就是统一通道的入口。base_url固定指向 API 地址api_key是你从控制台拿到的凭证timeout控制请求超时秒数。[database]段落管的是sqlite3的库文件路径echo_sql打开后可以打印执行的 SQL方便调试。Python 3.11 及以上版本自带tomllib可以直接读 TOML 文件。如果你用的是更早的版本装一个tomli就行。读取代码如下import tomllib with open(config.toml, rb) as f: config tomllib.load(f) api_key config[taotoken][api_key] base_url config[taotoken][base_url] db_path config[database][path] print(配置加载完成数据库路径:, db_path)有些同学可能更习惯 JSON 格式那也没问题。下面这份settings.json是等价写法{ app: { name: sqlite3-demo, debug: true }, taotoken: { api_key: 把你的Key粘贴到这里, base_url: https://taotoken.net/api, timeout: 30 }, database: { path: example.db, echo_sql: false } }读取 JSON 用标准库json即可import json with open(settings.json, r, encodingutf-8) as f: settings json.load(f) print(Key 前缀:, settings[taotoken][api_key][:6] ...)两种格式选一种就行不要同时维护两份否则改了一处忘了另一处排查起来很痛苦。我个人的习惯是纯 Python 项目用 TOML因为可读性好、支持注释如果配置要和前端或其他语言共享就用 JSON。注意api_key这一行千万不要提交到 Git。在项目根目录建一个.gitignore把config.toml、settings.json、*.db都写进去。4. 三步验证建表、插入、查询一次跑通配置就位后我们开始写数据库脚本。sqlite3的核心流程就四步连接、拿游标、执行 SQL、提交并关闭。下面这个脚本把建表、插入、查询串在一起你可以直接保存为demo.py运行。import sqlite3 import tomllib # 1. 读取配置 with open(config.toml, rb) as f: config tomllib.load(f) db_path config[database][path] # 2. 连接数据库文件不存在会自动创建 conn sqlite3.connect(db_path) cursor conn.cursor() # 3. 建表person 和 address 两张表用外键关联 cursor.execute( CREATE TABLE IF NOT EXISTS person ( id INTEGER PRIMARY KEY ASC, name VARCHAR(250) NOT NULL ) ) cursor.execute( CREATE TABLE IF NOT EXISTS address ( id INTEGER PRIMARY KEY ASC, street_name VARCHAR(250), street_number VARCHAR(250), post_code VARCHAR(250) NOT NULL, person_id INTEGER NOT NULL, FOREIGN KEY (person_id) REFERENCES person(id) ) ) # 4. 插入数据 cursor.execute(INSERT INTO person VALUES (1, pythoncentral)) cursor.execute(INSERT INTO address VALUES (1, python road, 1, 00000, 1)) # 5. 提交事务 conn.commit() # 6. 查询验证 cursor.execute(SELECT * FROM person) print(person 表:, cursor.fetchall()) cursor.execute(SELECT * FROM address) print(address 表:, cursor.fetchall()) # 7. 关闭连接 conn.close()运行python demo.py你会看到类似这样的输出person 表: [(1, pythoncentral)] address 表: [(1, python road, 1, 00000, 1)]到这里建表、插入、查询三步就全部验证通过了。项目目录下会多出一个example.db文件这就是你的本地数据库。你可以用sqlite3 example.db命令进入命令行输入.tables查看表名输入SELECT * FROM person;再确认一遍数据。这里解释几个初学者容易忽略的点。第一CREATE TABLE IF NOT EXISTS里的IF NOT EXISTS很重要它让脚本可以重复运行而不报错。第二conn.commit()必须调用否则插入的数据不会真正写入文件程序退出后就丢了。第三fetchall()返回的是列表每个元素是一个元组对应一行记录。如果你想把数据库路径也做成可配置的上面代码已经通过config[database][path]读取了改 TOML 文件即可不用动 Python 代码。这就是配置分离的好处。5. 本篇常见错排查从报错到修复即使代码照抄初学者还是会遇到一些典型报错。下面这几个是我在带人过程中见得最多的逐个说清楚原因和修法。报错一ModuleNotFoundError: No module named tomllib这说明你的 Python 版本低于 3.11。tomllib是 3.11 才进标准库的。解决办法有两个升级 Python或者装tomli并改导入语句import tomli as tomllib装的时候用pip install tomli。功能上完全等价只是包名不同。报错二sqlite3.OperationalError: table person already exists如果你没用IF NOT EXISTS第二次运行脚本就会撞上这个错。修法很简单把建表语句改成CREATE TABLE IF NOT EXISTS person (...)。或者你在调试阶段想每次重建可以在连接后先执行DROP TABLE IF EXISTS person但生产环境别这么干。报错三sqlite3.IntegrityError: UNIQUE constraint failed: person.id主键冲突。你重复插入了id1的记录。sqlite3的主键默认是唯一的第二次插入同一个 id 就会报这个错。修法要么先清空表DELETE FROM person要么把插入语句改成INSERT OR IGNORE要么用自增主键不手动指定 id。报错四查询结果为空[]数据明明插了查出来却是空列表。最常见的原因是忘了conn.commit()。sqlite3默认开启事务不提交的话数据只在连接内可见换个连接或程序退出就没了。另一个可能是你查的表名拼错了比如建的是person查的是persons。报错五config.toml读取失败TOMLDecodeErrorTOML 对格式比较敏感。检查一下字符串有没有加引号比如api_key 你的Key是错的必须写成api_key 你的Key。布尔值true是小写不能写成True。段落头[taotoken]要单独占一行。报错六Key 读取到了但请求 401如果你后面接模型调用时遇到 401先确认base_url是不是https://taotoken.net/api注意结尾不要多加斜杠。再确认 Key 有没有多余空格复制的时候容易带上换行。可以在脚本里打印repr(api_key)看看有没有隐藏字符。提示排查配置问题时先把debug打开把加载到的base_url和 Key 前缀打印出来比盲猜快得多。6. 下一步把统一 Key 接进你的脚本调用链数据库部分跑通之后你的项目里已经有了一个稳定的本地存储层。接下来要做的是在同一个配置体系下接入模型调用。因为config.toml里已经预留了[taotoken]段落你只需要在代码里读取api_key和base_url然后按标准方式发请求即可。如果你主要想验证模型能不能通、回答质量如何可以直接用模型对话页面手动试几条确认通道正常后再写进脚本。如果你打算做长期的编码辅助或者 Agent 项目Coding Plan 相关的入口更适合因为它面向的是持续调用场景。而当你需要管理多个 Key、查看用量、创建新凭证时API Keys 管理页面和接入文档是两个必须收藏的地址。回到本篇的核心sqlite3是 Python 标准库里最容易被低估的模块之一。它不需要额外安装不需要启动服务一个文件就是一个数据库。配合统一的 Key 配置你可以把「本地数据」和「模型能力」放在同一个脚本里前者负责存后者负责算。这个组合在原型阶段非常高效。最后留一个可执行的练习把上面的demo.py改一改加一个query_person(person_id)函数根据 id 查询姓名并打印。然后再加一个insert_person(name)函数用自增 id 插入新记录。跑通之后你就真正掌握了sqlite3的增查闭环而不是只会照抄示例。