You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS Mojave下Spyder(Python3)连接MySQL报AttributeError问题求助

解决MySQL Connector连接错误及代码问题

先来说你遇到的核心错误:AttributeError: module 'mysql' has no attribute 'connector',这通常是包安装或导入冲突导致的,然后再帮你排查代码里的其他问题。

一、修复Connector连接错误

1. 确保安装正确的Python包

你需要安装的是mysql-connector-python(官方维护的版本),而不是旧的mysql-connector。在Mac的bash里执行:

pip3 uninstall mysql-connector mysql-connector-python
pip3 install mysql-connector-python

注意用pip3对应你的Python3环境,避免和系统默认的Python2混淆。

2. 排查命名冲突

检查你的项目目录里:

  • 有没有名为mysql.py的文件(会覆盖官方包)
  • 有没有名为mysql的文件夹(同样会导致导入错误)
    如果有,重命名这些文件/文件夹,然后重启Spyder再测试。

3. 验证导入是否正常

在Spyder的控制台里单独执行:

import mysql.connector
print(mysql.connector.__version__)

如果能打印出版本号,说明导入正常,再运行你的代码。

二、代码里的其他错误(必须修复,否则连接成功后也会报错)

1. 列表定义错误

你的first_names和last_names把所有名字放在了一个字符串里,导致列表只有一个元素。正确的写法是每个名字单独用引号:

first_names = ['Jodee', 'Marielle', 'Phillip', 'Colby', 'Stephany', 'Dione', 'Grover', 'Napoleon', 'Nicholas', 'Alysa', 'Noma', 'Leta', 'Ciera', 'Donny', 'Buc', 'Iren', 'Renato', 'Glory', 'Stacia', 'Bennie', 'Soo', 'Mitzie', 'Kaci', 'Peggy', 'Hilma', 'Melva', 'Cindie', 'Miyoko', 'Melina', 'Cammy', 'Blanche', 'Rhea', 'Jill', 'Kellye', 'Ailene', 'Vida', 'Alva', 'Sau', 'Hollis', 'Oswaldo', 'Marty']
last_names = ['Bula', 'Bibi', 'Rolf', 'Tayna', 'Ardith', 'Art', 'Jeannetta', 'Patrina', 'Ronny', 'Maida', 'Cleopatra', 'Sherry', 'Vincenza', 'Sheri', 'Sherlyn', 'Shayne', 'Geneva', 'Javier', 'Celine', 'Saran', 'Shari', 'Boris', 'Gwyneth', 'Summer', 'Maryellen', 'Rufina', 'Essie', 'Palma', 'Rafael', 'Cordell', 'Jude', 'Jenine', 'Manuel', 'Cleveland', 'Daphine', 'Lavina', 'Candi', 'Rossie', 'Brunilda', 'Gilberte', 'Nick', 'Hoyt', 'Lucius', 'Ardis', 'Tyler', 'Dwain', 'Caleb', 'Aide', 'Mckinley', 'Margurite']

2. 列表索引错误

你用了first_names(fkey)来获取元素,这是函数调用的语法,列表应该用方括号索引:first_names[fkey],同理last_names[lkey]。

3. 随机数生成位置错误

你把fkey和lkey定义在循环外面,导致每次循环插入的都是同一个名字。应该把随机数生成放在循环内部,每次生成新的名字:

for i in range(nkey):
    fkey = random.randint(0, len(first_names)-1)  # 用len避免索引越界
    lkey = random.randint(0, len(last_names)-1)
    query = 'insert into test values(%s,%s,%s,%s,%s)'  # 是values不是value
    tup = ('L5W4NW', first_names[fkey], last_names[lkey], '2970', 'completed')
    mycursor.execute(query, tup)

另外注意SQL语句里是values而不是value,虽然有些数据库允许,但规范写法是values。

4. 避免索引越界

用len(first_names)-1代替固定的49,这样如果列表长度变化,不会出现索引超出范围的错误。

三、最终修正后的代码

import mysql.connector
import random

# 修正列表定义
first_names = ['Jodee', 'Marielle', 'Phillip', 'Colby', 'Stephany', 'Dione', 'Grover', 'Napoleon', 'Nicholas', 'Alysa', 'Noma', 'Leta', 'Ciera', 'Donny', 'Buc', 'Iren', 'Renato', 'Glory', 'Stacia', 'Bennie', 'Soo', 'Mitzie', 'Kaci', 'Peggy', 'Hilma', 'Melva', 'Cindie', 'Miyoko', 'Melina', 'Cammy', 'Blanche', 'Rhea', 'Jill', 'Kellye', 'Ailene', 'Vida', 'Alva', 'Sau', 'Hollis', 'Oswaldo', 'Marty']
last_names = ['Bula', 'Bibi', 'Rolf', 'Tayna', 'Ardith', 'Art', 'Jeannetta', 'Patrina', 'Ronny', 'Maida', 'Cleopatra', 'Sherry', 'Vincenza', 'Sheri', 'Sherlyn', 'Shayne', 'Geneva', 'Javier', 'Celine', 'Saran', 'Shari', 'Boris', 'Gwyneth', 'Summer', 'Maryellen', 'Rufina', 'Essie', 'Palma', 'Rafael', 'Cordell', 'Jude', 'Jenine', 'Manuel', 'Cleveland', 'Daphine', 'Lavina', 'Candi', 'Rossie', 'Brunilda', 'Gilberte', 'Nick', 'Hoyt', 'Lucius', 'Ardis', 'Tyler', 'Dwain', 'Caleb', 'Aide', 'Mckinley', 'Margurite']

# 连接数据库(确保前面的Connector问题已解决)
mydb = mysql.connector.connect(host='localhost', user='root', passwd='hariom21feb', database='test')
mycursor = mydb.cursor()

nkey = random.randint(0, 50)

for i in range(nkey):
    # 每次循环生成新的随机索引
    fkey = random.randint(0, len(first_names)-1)
    lkey = random.randint(0, len(last_names)-1)
    # 修正SQL语句的values拼写
    query = 'insert into test values(%s,%s,%s,%s,%s)'
    tup = ('L5W4NW', first_names[fkey], last_names[lkey], '2970', 'completed')
    mycursor.execute(query, tup)

mydb.commit()
# 记得关闭连接
mycursor.close()
mydb.close()

按照上面的步骤先解决Connector的安装和冲突问题,再修正代码里的错误,应该就能正常运行了。

内容的提问来源于stack exchange,提问作者Ritvik Rao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:00:21