ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Python连接MySQL数据库及简单增删改查操作:用TaoToken统一Key跑通本地CRUD验证

Python连接MySQL数据库及简单增删改查操作:用TaoToken统一Key跑通本地CRUD验证 1. 本地 Python 连 MySQL 做增删改查为什么还要管 API Key很多人第一次写 Python 操作 MySQL卡住的地方往往不是 SQL 语法而是环境PyMySQL 装没装、字符集对不对、commit 忘了写导致数据没落库。等这套 CRUD 跑通之后又会遇到第二个问题——项目里开始接入大模型能力比如让 AI 帮你生成 SQL、解释报错、批量造测试数据这时候 API Key 就散落在各个脚本里换一个模型就要改一次代码。这篇就聚焦一个很具体的场景在本地开发环境里用 PyMySQL 连接 MySQL把增删改查四个动作完整跑一遍同时用 TaoToken 的统一 Key 来管理模型调用凭证。TaoToken 是一个统一的大模型 API 接入平台能让你用一个 Key 调用多种模型适合本地开发时快速验证想法。它解决的是「凭证管理」这件事不替代你的数据库也不替代编辑器。适合谁看刚学 Python 数据库操作的新手、想给本地小工具加 AI 能力的开发者、以及被多个 API Key 搞烦的人。下面所有代码都可以直接复制到本地跑MySQL 用你本机已有的就行没有的话装个社区版也很快。我试过把数据库连接和模型调用拆成两个独立模块后面维护起来清爽很多你可以参考这个思路。整篇会按「先跑通数据库 CRUD再接入统一 Key最后验证结果」的顺序来每一步都有可复制的代码和预期输出。2. 用 TaoToken 统一 Key 管理模型调用凭证在写代码之前先把凭证这件事理清楚。本地开发常见的做法是把 Key 硬编码在脚本里或者写进.env。硬编码的问题很明显一旦提交到 Git 就泄露了。而如果你同时用几个不同平台的模型每个平台一套 Key、一套 Base URL脚本里到处是 if-else改起来很痛苦。TaoToken 的思路是提供一个统一的入口你只需要申请一个 Key然后在请求里指定要用的模型 ID就能调用不同的模型。对本地 CRUD 验证这种场景来说好处是你不用为了「让 AI 帮我生成一条测试数据」去注册好几个平台。具体操作路径是这样的先到官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 了解整体能力然后进控制台创建 API Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 的创建和管理都在这里。创建好的 Key 建议放进环境变量不要写死在代码里。如果你更习惯用命令行工具TaoToken 也提供了 Coding Plan适合长期做编码和 Agent 类任务地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。API 的基础地址统一是 https://taotoken.net/api 注意这个地址不带 UTM 参数配置的时候直接用就行。这里要强调一点TaoToken 是正规的 API 接入服务不是所谓的「中转」。你拿到的 Key 就是用来正常调用模型接口的配置方式和调用官方接口一致只是 Base URL 换成了统一入口。这一点在排查问题时很重要因为很多报错其实是 Base URL 写错导致的。把 Key 准备好之后我们回到数据库这边。整个流程分两段第一段是纯 MySQL 的 CRUD不涉及任何模型调用第二段是在 CRUD 脚本里加一个「用模型生成测试数据」的小功能验证统一 Key 能正常工作。这样拆分的好处是出问题时你能快速定位是数据库的问题还是 API 的问题。3. 可复制的连接配置与 CRUD 代码先装依赖。PyMySQL 是纯 Python 实现的 MySQL 客户端不需要编译装起来很快pip install pymysql如果你还想在脚本里调用模型再装一个 requestspip install requests接下来是建库建表。假设你已经有一个本地 MySQL用户是 root密码按你自己的来。先建一个测试库和表CREATE DATABASE IF NOT EXISTS demo_db DEFAULT CHARACTER SET utf8mb4; USE demo_db; CREATE TABLE IF NOT EXISTS test_table ( id VARCHAR(20) PRIMARY KEY, phone VARCHAR(20), dt VARCHAR(20) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;注意字符集用utf8mb4避免中文或特殊字符出问题。表结构很简单id 做主键phone 和 dt 两个字段够我们演示增删改查了。然后是连接配置。建议单独放一个db_config.py把连接参数集中管理# db_config.py DB_CONFIG { host: localhost, user: root, password: 你的密码, database: demo_db, charset: utf8mb4, cursorclass: None # 后面按需设置 }主脚本crud_demo.py这样写import pymysql from db_config import DB_CONFIG def get_conn(): return pymysql.connect(**DB_CONFIG) def insert_row(conn, row_id, phone, dt): sql INSERT INTO test_table(id, phone, dt) VALUES (%s, %s, %s) with conn.cursor() as cur: try: cur.execute(sql, (row_id, phone, dt)) conn.commit() print(f插入成功: {row_id}) except Exception as e: conn.rollback() print(f插入失败: {e}) def update_row(conn, row_id, phone): sql UPDATE test_table SET phone%s WHERE id%s with conn.cursor() as cur: try: cur.execute(sql, (phone, row_id)) conn.commit() print(f更新成功: {row_id}) except Exception as e: conn.rollback() print(f更新失败: {e}) def delete_row(conn, row_id): sql DELETE FROM test_table WHERE id%s with conn.cursor() as cur: try: cur.execute(sql, (row_id,)) conn.commit() print(f删除成功: {row_id}) except Exception as e: conn.rollback() print(f删除失败: {e}) def select_all(conn): sql SELECT id, phone, dt FROM test_table with conn.cursor() as cur: cur.execute(sql) result cur.fetchall() for row in result: print(row) return result if __name__ __main__: conn get_conn() insert_row(conn, 1001, 666, 20211210) insert_row(conn, 1002, 888, 20211211) update_row(conn, 1002, 777) delete_row(conn, 1001) print(当前数据:) select_all(conn) conn.close()这里有几个细节值得说。第一用%s占位符而不是字符串拼接能防 SQL 注入。第二with conn.cursor()会自动关闭游标比手动 close 省心。第三增删改都要commit()忘了写的话数据不会真正落库这是新手最常见的坑。第四异常时rollback()保证事务一致性。运行python crud_demo.py预期输出是插入两条、更新一条、删除一条最后打印出剩下的一条记录。如果看到类似(1002, 777, 20211211)的输出说明 CRUD 全通了。4. 验证请求与成功结果数据库跑通之后我们加一段模型调用验证 TaoToken 的统一 Key 能正常工作。场景设定为让模型根据表结构生成一条测试数据然后我们把它插进数据库。先配置环境变量把 Key 放进去export TAOTOKEN_API_KEY你的Key然后在脚本里加一个函数import os import requests def generate_test_data(): api_key os.environ.get(TAOTOKEN_API_KEY) url https://taotoken.net/api/v1/chat/completions headers { Authorization: fBearer {api_key}, Content-Type: application/json } payload { model: 你的模型ID, messages: [ {role: user, content: 表结构是 id VARCHAR(20), phone VARCHAR(20), dt VARCHAR(20)请生成一条测试数据只返回 JSON格式为 {\id\:\...\,\phone\:\...\,\dt\:\...\}} ] } resp requests.post(url, headersheaders, jsonpayload, timeout30) print(状态码:, resp.status_code) print(返回:, resp.text) return resp.json()调用之后如果状态码是 200返回体里会有choices字段里面是模型生成的内容。你可以把这段 JSON 解析出来再拼成 INSERT 语句插进数据库形成「模型生成 → 数据库落库」的闭环。这里的关键是 Base URL 用https://taotoken.net/api路径按接口文档拼。模型 ID 填你在控制台看到的那个。如果返回 401多半是 Key 没读到或者写错了如果返回 404检查一下 URL 路径。验证成功的标志是脚本先打印出模型返回的 JSON然后这条数据被插入数据库最后select_all能查到它。整个过程不需要你切换多个平台的 Key一个环境变量就够了。如果你只是想先验证模型能不能通可以打开模型对话页面 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 直接发一条消息试试确认 Key 有效之后再回到代码里调。5. 本篇常见报错排查本地跑这套流程报错基本集中在几个地方。下面按真实遇到的错误对照排查。报错一pymysql.err.OperationalError: (1045, Access denied for user rootlocalhost)这是密码或用户名不对。检查db_config.py里的user和password确认和你本地 MySQL 一致。如果你用的是 MySQL 8注意默认认证插件可能和 PyMySQL 版本不兼容可以在连接参数里加auth_pluginmysql_native_password或者把用户改成用该插件认证。报错二pymysql.err.OperationalError: (2003, Cant connect to MySQL server on localhost)MySQL 服务没启动或者端口不是默认的 3306。先确认服务在跑再检查端口。如果你改过端口在DB_CONFIG里加port字段。报错三UnicodeEncodeError或中文乱码字符集没统一。建库建表用utf8mb4连接参数里也写charsetutf8mb4两边要一致。报错四调用模型返回401 UnauthorizedKey 没读到。先确认环境变量TAOTOKEN_API_KEY在当前终端里能echo出来。如果是用 IDE 运行注意 IDE 可能没继承你 shell 里的环境变量需要在运行配置里单独设置。另外检查 Authorization 头是不是Bearer加空格再加 Key。报错五返回local proxy failed或连接超时这类错误通常是网络层的问题。检查你的 Base URL 是不是写成了https://taotoken.net/api路径有没有多写或少写。如果你本地配了什么网络工具先关掉再试避免干扰。TaoToken 的接口是直连的不需要额外配置。报错六KeyError: choices或reading choices相关错误返回体里没有choices说明请求没成功。先把resp.text完整打印出来看通常是模型 ID 写错了或者请求体格式不对。模型 ID 要以控制台里显示的为准。报错七数据插入后查不到忘了commit()。PyMySQL 默认不开自动提交增删改之后必须显式 commit否则连接关闭时改动会回滚。如果你用的是 Claude Code 这类工具做辅助开发配置的时候要写全三件套Base URL 填https://taotoken.net/apiKey 填你的 TaoToken KeyModel ID 填你要用的模型。三个缺一不可少一个就会报认证或找不到模型的错。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 遇到不确定的字段可以去对照。6. 把 Key 管好把 CRUD 跑顺整套流程走下来你会发现真正花时间的不是写 SQL而是把环境和凭证理顺。数据库这边记住三件事字符集统一、占位符防注入、增删改必 commit。凭证这边把 Key 放进环境变量Base URL 用统一入口模型 ID 按需切换。如果你后面要长期做编码类任务比如让模型持续帮你写 SQL、改脚本可以看看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 比每次手动调接口省事。需要新建或轮换 Key 的时候去 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 操作就行。最后留一个实用技巧把db_config.py和模型调用封装成两个独立模块CRUD 脚本只负责业务逻辑。这样以后换数据库或换模型只改一个文件不用满项目找连接字符串。本地开发最怕的就是改一处漏一处模块化能帮你省下不少排查时间。
返回列表