ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Ubuntu下用Python操作MySQL:TaoToken统一Key接入与pymysql配置实战

2026/9/27 22:04:10 拓冰建站 浏览量
Ubuntu下用Python操作MySQL:TaoToken统一Key接入与pymysql配置实战 1. Ubuntu 下 Python 连 MySQL 到底卡在哪在 Ubuntu 上写 Python 脚本操作 MySQL看着简单实际动手时经常卡在几个地方pymysql 装完 import 报错、连接参数写错端口、远程连不上 3306、增删改忘了 commit 导致数据没落库。更麻烦的是当项目里同时要调模型 API、跑数据库读写、还要管理一堆 Key 的时候配置散落在各个文件里改一个地方要翻半天。这篇就聚焦一条完整链路Ubuntu 环境 → 安装 pymysql → 写连接脚本 → 用 TaoToken 统一 Key 管理 API 通道 → 配置文件骨架 → 连通性验证。适合刚接触 Python 数据库操作、或者想把 API Key 和数据库配置统一管理的开发者。读完你能直接复制脚本跑通读写也能拿到 settings.json 和 config.toml 两份配置模板。核心检索词先明确pymysql 是 Python 操作 MySQL 的纯 Python 驱动不需要编译 C 扩展Ubuntu 上 pip 装完就能用TaoToken 在这里的角色是统一 API Key 通道把模型调用、编码 Agent 等入口的鉴权收敛到一个 Key 上避免每个服务单独配一套凭证。2. 前置准备Ubuntu 环境与 TaoToken Key2.1 Ubuntu 侧基础依赖先确认 Python 和 pip 版本。Ubuntu 20.04 以上一般自带 Python3但 pip 可能要单独装sudo apt update sudo apt install python3 python3-pip python3-venv -y python3 --version pip3 --versionMySQL 服务端和客户端都装上server 负责数据存储和查询处理client 提供命令行交互入口sudo apt install mysql-server mysql-client -y sudo systemctl status mysql服务起来后进 MySQL 建一个测试库和表后面脚本要用CREATE DATABASE school CHARACTER SET utf8mb4; USE school; CREATE TABLE category ( categoryid INT PRIMARY KEY, pid INT, categoryName VARCHAR(64) ); INSERT INTO category VALUES (1, 0, 后端开发), (2, 1, Python);2.2 TaoToken 统一 Key 的定位TaoToken 在这里不是替代 MySQL而是把 API 鉴权统一起来。你可以在官网注册后拿到一个 Key然后模型对话、Coding Plan、API 调用都走这一个凭证。对项目来说好处是配置文件里不用散落多个 Key换环境时只改一处。拿 Key 的入口在控制台登录后进 API Keys 页面创建。创建完复制保存后面写进配置文件。注意 Key 只显示一次丢了就重新生成。提示TaoToken 的 API 基地址是 https://taotoken.net/api配置时不要带多余路径SDK 会自动拼接。3. 可复制配置pymysql 安装与配置文件骨架3.1 安装 pymysql 并验证建议用虚拟环境隔离依赖避免和系统包冲突cd ~/projects python3 -m venv venv source venv/bin/activate pip install pymysql pip show pymysqlpip show能看到版本号和安装路径就说明装好了。如果 import 报 ModuleNotFoundError八成是虚拟环境没激活或者用了系统 python 而不是 venv 里的。3.2 settings.json 骨架这个文件放数据库连接参数和 TaoToken Key适合被 Python 脚本读取{ database: { host: 127.0.0.1, port: 3306, user: root, password: your_mysql_password, database: school, charset: utf8mb4 }, taotoken: { api_base: https://taotoken.net/api, api_key: sk-你的TaoTokenKey, default_model: claude-sonnet } }读取时用标准库 json 就行不用额外装包import json with open(settings.json, r, encodingutf-8) as f: cfg json.load(f) db cfg[database] print(db[host], db[port], db[database])3.3 config.toml 骨架如果你更习惯 TOML 格式Python 3.11 以上自带 tomllib低版本装 tomli[database] host 127.0.0.1 port 3306 user root password your_mysql_password database school charset utf8mb4 [taotoken] api_base https://taotoken.net/api api_key sk-你的TaoTokenKey default_model claude-sonnet读取方式import tomllib with open(config.toml, rb) as f: cfg tomllib.load(f) print(cfg[database][host])两种格式选一种就行JSON 通用性好TOML 可读性强。团队项目里建议统一别混用。4. 验证请求连接脚本与读写实测4.1 查询脚本把连接、游标、执行、取结果、关闭串起来注意异常处理和资源释放import pymysql import json with open(settings.json, r, encodingutf-8) as f: db json.load(f)[database] conn None cur None try: conn pymysql.connect( hostdb[host], portdb[port], userdb[user], passworddb[password], databasedb[database], charsetdb[charset], cursorclasspymysql.cursors.DictCursor ) cur conn.cursor() cur.execute(SELECT * FROM category) rows cur.fetchall() for row in rows: print(row) except Exception as e: print(查询失败:, e) finally: if cur: cur.close() if conn: conn.close()DictCursor让结果以字典返回字段名直接当 key 用比默认元组好读。4.2 增删改脚本增删改和查询的区别就一步必须 commit。不 commit 的话连接关闭时改动会回滚你会以为写成功了其实没有import pymysql import json with open(settings.json, r, encodingutf-8) as f: db json.load(f)[database] conn None cur None try: conn pymysql.connect(**db, cursorclasspymysql.cursors.DictCursor) cur conn.cursor() cur.execute( INSERT INTO category (categoryid, pid, categoryName) VALUES (%s, %s, %s), (9, 3, 计算机科学与技术) ) cur.execute( UPDATE category SET categoryName%s WHERE categoryid%s, (Python工程师, 2) ) cur.execute(DELETE FROM category WHERE categoryid%s, (5,)) conn.commit() print(写入成功影响行数:, cur.rowcount) except Exception as e: if conn: conn.rollback() print(写入失败已回滚:, e) finally: if cur: cur.close() if conn: conn.close()参数化查询用%s占位别用字符串拼接否则有 SQL 注入风险。4.3 连通性验证命令不想写脚本时用命令行快速验证mysql -h 127.0.0.1 -P 3306 -u root -p -e SELECT NOW(), DATABASE();Python 侧验证 pymysql 能否连上python3 -c import pymysql conn pymysql.connect(host127.0.0.1, port3306, userroot, passwordyour_password, databaseschool) print(连接成功, conn.get_server_info()) conn.close() 两条都通说明链路没问题。5. 本篇常见错排查5.1 pymysql 报 Access denied密码错、用户没权限、或者 host 不匹配。MySQL 里 root 默认只允许 localhost 登录远程连要单独授权CREATE USER root% IDENTIFIED BY 密码; GRANT ALL PRIVILEGES ON *.* TO root%; FLUSH PRIVILEGES;改完记得检查 MySQL 的 bind-address默认可能是 127.0.0.1远程访问要改成 0.0.0.0 并重启服务。5.2 中文乱码连接参数 charset 写 utf8mb4建库建表也用 utf8mb4。如果历史数据已经是乱码改连接参数救不回来得重新导入。5.3 增删改没生效九成是忘了conn.commit()。pymysql 默认 autocommit 关闭所有写操作都在事务里不提交就回滚。可以在连接时加autocommitTrue但显式 commit 更可控。5.4 TaoToken Key 读取失败检查 settings.json 里 Key 有没有多余空格JSON 格式是否合法。用python3 -m json.tool settings.json验证格式。Key 泄露了就去控制台重新生成旧 Key 立即失效。6. 统一 Key 通道的后续接入数据库链路跑通后如果你还要在同一个项目里调模型 API 或跑编码 AgentTaoToken 的统一 Key 就能派上用场。把 Key 写进 settings.json 的 taotoken 段脚本里读出来传给 SDK 即可不用每个服务单独配凭证。需要管理 Key 或查看用量进控制台想先试模型对话效果用模型对话页面长期跑编码任务或 Agent看 Coding Plan 的额度方案接入细节查接入文档。API 基地址统一用 https://taotoken.net/apiSDK 会自动拼接路径。实测下来把数据库配置和 API Key 放同一个配置文件里换机器时只改一个文件就能跑比散落在环境变量和代码里省事。配置文件记得加进 .gitignore别把密码和 Key 提交到仓库。