 连不上 MySQL?用 TaoToken 接的 Codex 逐行对照排查)
一、为什么pymysql.connect()总是连不上从一段入门代码说起如果你正在学 Python 连 MySQL大概率写过下面这段代码import pymysql db pymysql.connect( hostlocalhost, port3306, userroot, passwdroot123456, dbdemo ) cursor db.cursor() sql SELECT VERSION() cursor.execute(sql) data cursor.fetchone() print(data) db.close()这段代码本身没问题问题在于新手照着示例抄参数时几乎不可能一次抄对。host是localhost还是127.0.0.1port是 3306 还是被改过的 3307passwd是 MySQL 登录密码还是别的db这个库到底建了没有只要其中任意一个对不上connect()就会直接抛异常而报错信息往往只有一句OperationalError看不出到底错在哪一行。更麻烦的是很多人连cursor和db.close()的关系都没理清游标用完没关、连接用完没关程序跑一次没事跑多次就开始报连接数超限。这篇不讲新库新表只做一件事把「照着示例抄connect()参数」这一步交给 Codex 逐行对照排查。而 Codex 要能跑起来需要先有一个可用的模型接入点——这里用 TaoToken 提供 Key 和 Base URLMySQL 连接本身仍然由你本地的pymysql完成。TaoToken 官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end二、前置准备给 Codex 配好 TaoToken 的 Key 和 Base URL在让 Codex 帮你读代码之前先把接入配置做对。这一步只做一次后面排查connect()参数时就不用再折腾环境了。第一步注册并创建 Key打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册账号后进入控制台创建一个 API Key。这个 Key 就是后面 Codex 调用模型时用的凭证。创建 Key 的入口在控制台的 API Keys 页面直接访问 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite第二步确认 Base URLCodex 里填的 Base URL 是https://taotoken.net/api注意两点不带/v1不加任何 UTM 参数。很多人配不通就是因为多写了一段路径或者把带参数的链接粘进去了。第三步在 Codex 里填入配置如果你用的是 Codex CLI 或类似的编码助手把 Key 和 Base URL 填进对应的配置项即可。配好之后Codex 就能读取你本地的 Python 文件对着那段pymysql.connect()逐行分析。这里要强调一次TaoToken 在这条链路里只负责给 Codex 供 Key 和 Base URL它不参与 MySQL 连接。你的pymysql连的还是本机localhost:3306两件事不要混在一起。三、可复制配置把 connect() 那段代码交给 Codex 逐行核对配置好之后把下面这段代码保存成db_test.py然后让 Codex 打开它import pymysql db pymysql.connect( hostlocalhost, port3306, userroot, passwdroot123456, dbdemo ) cursor db.cursor() sql SELECT VERSION() cursor.execute(sql) data cursor.fetchone() print(data) db.close()让 Codex 做的事很具体逐行核对每个参数该填什么、哪一步该关连接。你可以直接给它这样的指令请逐行检查这段 pymysql 连接代码指出 host、port、user、passwd、db 五个参数分别应该填什么并说明 cursor 和 db 应该在什么时候关闭。Codex 会给出的排查方向通常包括这几类host 参数localhost和127.0.0.1在大多数情况下等价但如果 MySQL 只监听了127.0.0.1而系统把localhost解析成了 IPv6 的::1就会连不上。这种情况改成127.0.0.1往往能直接解决。port 参数默认是 3306但如果你装 MySQL 时改过端口或者本机装了多个 MySQL 实例端口就不是 3306。可以用netstat -an | grep 3306Linux/macOS或netstat -ano | findstr 3306Windows确认实际监听端口。user 和 passwd 参数root是用户名root123456是密码。这两个必须和 MySQL 里实际创建的账号一致。如果密码里有特殊字符注意不要被转义。db 参数demo这个库必须已经存在。如果没建connect()会报Unknown database demo。可以先在 MySQL 里执行CREATE DATABASE demo;。cursor 和 db.close()cursor用完应该cursor.close()db用完应该db.close()。示例里只关了db严格来说游标也应该关。Codex 会提醒你补上cursor.close()或者用with语句自动管理。把 Codex 指出的问题逐条改完再自己跑一次脚本。四、验证请求改完参数后跑一次 SELECT VERSION()改完connect()参数后直接运行python db_test.py如果连接成功终端会打印出 MySQL 的版本号类似(8.0.35,)看到这个输出说明host、port、user、passwd、db五个参数全部对上了SELECT VERSION()也执行成功了。如果还是报错把完整的报错信息复制给 Codex让它继续对照。常见的报错和对应原因Access denied for user rootlocalhost用户名或密码错。Cant connect to MySQL server on localhostMySQL 没启动或者 host/port 不对。Unknown database demo库没建。ModuleNotFoundError: No module named pymysql驱动没装执行pip install PyMySQL。验证模型对话链路是否正常可以在模型对话页面直接测试 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite五、本篇常见错排查错误一Base URL 写成了带/v1的地址Codex 里填的 Base URL 必须是https://taotoken.net/api不要写成https://taotoken.net/api/v1也不要带 UTM 参数。多一段路径就会导致请求 404。错误二把 TaoToken 的 Key 当成 MySQL 密码这两个是完全不同的东西。TaoToken 的 Key 是给 Codex 调用模型用的MySQL 的passwd是你本地数据库的登录密码。不要混填。错误三connect()参数抄了示例但没改示例里的passwdroot123456和dbdemo只是占位。你自己的 MySQL 密码和库名是什么就填什么。Codex 能帮你指出「这里可能和你的实际环境不一致」但实际值只有你知道。错误四游标和连接忘记关闭示例里只写了db.close()但cursor也应该关。如果程序里多次调用connect()而不关会逐渐耗尽 MySQL 的最大连接数。建议改成cursor db.cursor() try: cursor.execute(SELECT VERSION()) data cursor.fetchone() print(data) finally: cursor.close() db.close()错误五MySQL 服务根本没启动在排查代码之前先确认 MySQL 服务在运行。Linux 下systemctl status mysqlmacOS 下brew services listWindows 下看服务列表。服务没起来参数填得再对也连不上。如果你在接入配置上遇到问题比如 Key 不生效、Base URL 报错可以对照接入文档检查 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite六、把排查链路固定下来这篇的核心不是教你写pymysql.connect()而是把「照着示例抄参数」这个最容易出错的步骤变成一条可复用的排查链路从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 拿到 Key在 Codex 里填 Base URLhttps://taotoken.net/api让 Codex 逐行核对connect()、cursor()、SELECT VERSION()、db.close()改完参数自己跑一次验证。这条链路配通之后以后遇到任何 Python 连数据库的报错都可以用同样的方式让 Codex 帮你定位。MySQL 连接始终由你本地的pymysql完成TaoToken 只负责让 Codex 能跑起来。如果你后续要长期用 Codex 做编码排查可以考虑 Coding Plan把接入配置固定下来 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite需要管理多个 Key 或查看用量进控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite