首页/新闻资讯/正文详情

Python 数据库操作获取数据表数据:用 pymysql 配 TaoToken 的 settings.json 骨架与验证

发布时间:2026/9/23 10:59:52 来源:云帆数科 栏目:资讯中心
Python 数据库操作获取数据表数据:用 pymysql 配 TaoToken 的 settings.json 骨架与验证
1. 从一段能跑但不好维护的取数脚本说起Python 数据库操作获取数据表数据说白了就是三件事连上库、发 SQL、把结果拿回来。很多人第一次写 pymysql 取数都是照着一段十几行的脚本抄pymysql.connect(...)里硬编码 host、user、passwordcursor.execute(select * from 表名)一把梭跑通了就丢进项目里。问题是这段代码能跑但不好维护——换台机器要改密码换个环境要改端口AI 辅助编码时把这段贴给模型模型还得反问你账号密码是什么。这篇聚焦的场景很具体本地脚本 AI 辅助编码。你要做的是让 Python 通过 pymysql 稳定读取数据表数据同时把连接参数、模型调用通道这些配置类的东西抽出来统一放进一个settings.json骨架里。这样脚本本身只关心业务逻辑配置交给文件AI 帮你改代码时也不会把敏感信息写进源码。适合谁看写过一点 Python、知道pip install怎么用、但还没系统整理过配置管理的同学或者已经在用 AI 辅助写代码想让模型帮你生成取数脚本、又不想每次手动补连接串的人。下面我会给出可复制的settings.json骨架含 TaoToken 统一 Key/API 通道接入点、pymysql 取数示例以及连接测试、表数据读取、结果校验三步验证动作。跟着做十分钟内能跑通整条链路。2. 前置准备TaoToken 通道与 pymysql 环境在写代码之前先把两样东西备齐一个是数据库连接信息一个是 AI 辅助编码时用的模型调用通道。前者你本地 MySQL 或测试库应该已经有了后者我用 TaoToken 来做统一接入——它的作用是把模型调用的 Key 和 API 地址收敛到一个入口脚本里读配置就行不用到处散落。TaoToken 的官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基地址是 https://taotoken.net/api 。注意 API 地址不带后面那串 UTM 参数配置里写干净的就行。你需要去控制台拿一个 API Key地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。拿到 Key 之后先别急着写进代码我们统一放进settings.json。Python 侧的环境准备就两条命令python -m venv venv source venv/bin/activate # Windows 用 venv\Scripts\activate pip install pymysql如果你还想在脚本里顺带调用模型做数据处理再装一个 OpenAI 兼容的 SDKpip install openaiTaoToken 的 API 是 OpenAI 兼容格式所以用openai这个包就能直接对接把base_url指向 https://taotoken.net/api 即可。这样你的取数脚本和模型调用共用同一份配置骨架维护成本低很多。3. settings.json 配置骨架与 pymysql 取数示例3.1 settings.json 骨架先建一个settings.json把数据库连接和 TaoToken 通道都放进去。注意这是骨架字段名你可以按自己习惯改但结构建议保留{ database: { host: 127.0.0.1, port: 3306, user: your_db_user, password: your_db_password, db: your_database, charset: utf8mb4 }, taotoken: { api_key: sk-你的TaoTokenKey, base_url: https://taotoken.net/api, model: claude-sonnet-4-20250514 }, query: { table: your_table, limit: 100 } }几个要点说明一下。charset建议固定utf8mb4不然中文表数据容易出乱码。taotoken.base_url写 https://taotoken.net/api 不要带 UTM 后缀。query.limit是给取数脚本用的默认条数避免select *把整张大表拉爆内存。注意settings.json里含密码和 Key务必加进.gitignore别提交到仓库。可以再建一个settings.example.json放占位符给协作用。3.2 读取配置的封装写一个config.py把 JSON 读进来import json from pathlib import Path def load_settings(pathsettings.json): with Path(path).open(r, encodingutf-8) as f: return json.load(f) SETTINGS load_settings()这样其他脚本from config import SETTINGS就能拿到配置不用重复读文件。3.3 pymysql 取数示例下面是核心的取数函数相比开头那段硬编码版本这里做了三处改进连接参数从配置读、用with管理游标、异常时打印具体错误而不是裸exceptimport pymysql from config import SETTINGS def fetch_table_data(tableNone, limitNone): db_conf SETTINGS[database] table table or SETTINGS[query][table] limit limit or SETTINGS[query][limit] conn pymysql.connect( hostdb_conf[host], portdb_conf[port], userdb_conf[user], passworddb_conf[password], databasedb_conf[db], charsetdb_conf[charset], cursorclasspymysql.cursors.DictCursor, ) sql fSELECT * FROM {table} LIMIT %s try: with conn.cursor() as cursor: cursor.execute(sql, (limit,)) results cursor.fetchall() return results except pymysql.MySQLError as e: print(f查询失败: {e}) raise finally: conn.close() if __name__ __main__: rows fetch_table_data() print(f共取到 {len(rows)} 行) for row in rows[:3]: print(row)这里用了DictCursor返回的是字典列表比默认的元组可读性好很多。SQL 里表名用反引号包起来避免表名是关键字时出错LIMIT用参数化占位符%s防止拼接注入。3.4 顺带调用模型处理数据如果你想让模型帮忙总结取到的数据可以加一个函数from openai import OpenAI from config import SETTINGS def ask_model(prompt): client OpenAI( api_keySETTINGS[taotoken][api_key], base_urlSETTINGS[taotoken][base_url], ) resp client.chat.completions.create( modelSETTINGS[taotoken][model], messages[{role: user, content: prompt}], ) return resp.choices[0].message.content这样取数和模型调用共用一份settings.json换 Key 或换模型只改一个文件。4. 三步验证连接、取数、结果校验配置写好了不代表能跑通按下面三步逐个验证出问题能快速定位到是哪一环。4.1 第一步连接测试先只验证能不能连上库不查数据import pymysql from config import SETTINGS def test_connection(): db_conf SETTINGS[database] try: conn pymysql.connect( hostdb_conf[host], portdb_conf[port], userdb_conf[user], passworddb_conf[password], databasedb_conf[db], charsetdb_conf[charset], ) with conn.cursor() as cursor: cursor.execute(SELECT VERSION()) version cursor.fetchone() conn.close() print(f连接成功MySQL 版本: {version[0]}) return True except pymysql.MySQLError as e: print(f连接失败: {e}) return False test_connection()跑通会打印类似连接成功MySQL 版本: 8.0.36。如果这一步就报错先别往下走对照第 5 节的排查表处理。4.2 第二步表数据读取连接没问题后调用第 3 节的fetch_table_data()python fetch_data.py预期输出是共取到 N 行加上前三条记录。如果 N 是 0说明表里没数据或者LIMIT条件不对如果报Table doesnt exist检查settings.json里的query.table是否拼错。4.3 第三步结果校验取到数据后做一次结构校验确认字段和行数符合预期rows fetch_table_data() assert isinstance(rows, list), 返回结果不是列表 if rows: first rows[0] print(字段列表:, list(first.keys())) print(首行示例:, first) else: print(表为空跳过字段校验)这一步能帮你发现两类问题一是DictCursor没生效导致返回元组二是字段名和预期不符比如表结构改过。校验通过整条链路就算跑通了。5. 本篇常见错误排查下面这些是我在本地脚本和 AI 辅助编码场景里踩过的坑按报错信息对照处理。报错信息常见原因处理方式Access denied for user账号密码错或该用户没有远程权限核对settings.json的 user/password本地库确认用户 host 是localhost还是%Cant connect to MySQL server on 127.0.0.1MySQL 没启动或端口不对确认服务在跑检查port是否为 3306改过端口要同步Unknown databasedb字段拼错或库不存在用SHOW DATABASES;核对库名Table xxx doesnt exist表名错或没选对库核对query.table确认连的库里有这张表中文乱码字符集不是 utf8mb4连接参数加charsetutf8mb4建表也用 utf8mb4ModuleNotFoundError: No module named pymysql没装依赖或装错虚拟环境激活 venv 后重新pip install pymysql模型调用返回 401TaoToken Key 错或没带Bearer检查api_key是否完整SDK 会自动加 Bearer手写请求要带上模型调用返回 404base_url写错确认是 https://taotoken.net/api 不要带多余路径提示如果连接测试通过但取数报错问题基本在 SQL 或表名如果连接测试就失败问题在配置或网络。先分层定位别一上来就改代码。另外AI 辅助编码时经常遇到模型生成的代码里硬编码了连接串。你可以把settings.json骨架贴给模型明确告诉它连接参数从配置读不要写死生成的代码质量会高很多。模型对话入口在 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 需要长期跑编码任务的话可以看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。6. 把配置和取数拆开脚本才活得久回到开头那段硬编码脚本它最大的问题不是语法而是把环境相关和业务相关混在一起。settings.json骨架的价值就在于把 host、port、password、TaoToken Key 这些会变的东西抽出去脚本只留取数逻辑。这样换环境改一个文件AI 帮你改代码也不会误伤配置。如果你还没拿 TaoToken 的 Key去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 建一个填进settings.json的taotoken.api_key就能跑通第 3.4 节的模型调用。接入细节和参数说明在文档里 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。最后留一个实用习惯每次改完settings.json先跑第 4.1 节的连接测试再跑取数最后跑校验。三步都过再往业务逻辑上加东西。这个顺序能帮你把问题挡在配置层而不是等业务代码报错时再回头翻连接串。

相关推荐

Kubernetes故障排查分层定位方法论
Kubernetes故障排查分层定位方法论

1. 为什么Kubernetes故障排查不能只靠kubectl get?Kubernetes故障排查合集——这名字听起来像一本工具手册,但实际用起来,你会发现它更像一本“系统病理学诊断指南”。我带过三支不同行业的运维团队,从金融核心交易系统到电商大促… · 2026/9/23 10:59:46

使用AI生成Java单元测试,代码无BUG:TaoToken统一Key接入Cursor与IDEA的配置实战
使用AI生成Java单元测试,代码无BUG:TaoToken统一Key接入Cursor与IDEA的配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/23 10:59:46

垃圾分类检测数据集实战:YOLO+VOC双格式训练与调优指南
垃圾分类检测数据集实战:YOLO+VOC双格式训练与调优指南

简介:这是一份面向目标检测学习者的垃圾分类检测数据集,适合从事计算机视觉入门、YOLO/VOC格式训练及环保识别项目实践的开发者与高校学生使用,可解决垃圾材质分类检测任务中样本不足、标注不完整的问题。压缩包共约2000个文件,以… · 2026/9/23 10:59:46

3步搞定内存不能为read修复,面试高频考点全解析
3步搞定内存不能为read修复,面试高频考点全解析

3步搞定内存不能为read修复,面试高频考点全解析 看了一堆教程还是不会写项目?别慌,这其实是很多开发者的通病。你背了概念,却跑不通代码,一到实战就卡壳。 更扎心的是,这种“内存不能为read”的错误,往往还出现在 高频面试题… · 2026/9/23 11:37:35

2026最新excel竖列变横列面试实战
2026最新excel竖列变横列面试实战

2026最新excel竖列变横列面试实战 版本升级后 API 全变了,这是很多老程序员转行或跨部门协作时最头疼的事。以前在 Excel 里手动复制粘贴就能搞定的数据透视,现在面试直接问底层实现逻辑,连 Python 的 pandas… · 2026/9/23 11:37:28

2026最新中国好学霸答案:解决版本升级API全变了的性能优化实战
2026最新中国好学霸答案:解决版本升级API全变了的性能优化实战

2026最新中国好学霸答案:解决版本升级API全变了的性能优化实战 版本升级后 API 全变了,代码跑不通是常态。2026最新技术栈下,很多老项目直接崩盘。别慌,这篇【中国好学霸答案】教你用性能优化稳住阵脚。 性能瓶颈定位:别猜,要测… · 2026/9/23 11:37:28

2026最新干老女人实战指南: 3步看懂StackTrace并修复核心Bug
2026最新干老女人实战指南: 3步看懂StackTrace并修复核心Bug

2026最新干老女人实战指南: 3步看懂StackTrace并修复核心Bug 盯着屏幕上一眼望不到头的红色异常日志,那种窒息感熟悉吗?刚接手一个老旧系统,或者接手一个“祖传”代码库,报错信息像天书一样堆砌,… · 2026/9/23 11:37:22

3道n卡官网高频面试题 助你拿下大厂实战项目Offer
3道n卡官网高频面试题 助你拿下大厂实战项目Offer

3道n卡官网高频面试题 助你拿下大厂实战项目Offer 别再说你只会背八股文了。很多转岗的朋友,语法倒背如流,LeetCode刷了几百道,但一遇到真实的企业级 实战项目… · 2026/9/23 11:37:22

FPGA SelectIO IP核配置详解:LVDS接口位序与延迟链调试
FPGA SelectIO IP核配置详解:LVDS接口位序与延迟链调试

简介:面向FPGA开发者的SelectIO接口配置专题资料,聚焦Xilinx SelectIO结构与IP核使用,适用于使用Vivado设计工具进行高速I/O接口设计的中高级工程师。这份PDF收录了SelectIO Interface Wizard v5.1的完整产品指南,内容涵盖产品规格… · 2026/9/23 11:37:15

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码