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

使用pymysql出现AttributeError: 'NoneType' object has no attribute 'encoding'错误求助

解决pymysql中的AttributeError: 'NoneType' object has no attribute 'encoding'错误

这个错误本质上是因为你的数据库连接对象(conn)或者游标(cursor)变成了None,导致后续操作调用属性时失败。结合你的代码来看,最可能的问题和解决方法如下:

1. 修正charset参数的写法

你在pymysql.connect里写的是charset="utf-8",但MySQL的字符集标识是utf8(没有横杠),pymysql严格遵循MySQL的命名规范,使用utf-8会导致连接初始化失败,最终conn成为None。

把这行改成:

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456',db='home', charset="utf8")

2. 给连接和操作加完整的异常捕获

你的代码只捕获了插入阶段的异常,但连接、创建表阶段的错误没被处理,很容易出现None对象的情况。建议把整个数据库操作流程都包裹在try-except里,同时加上资源释放的finally块。

3. 修正表字段的拼写错误

你创建表时写的catagory是拼写错误,正确的应该是category,虽然这不是当前错误的直接原因,但后续插入数据时会因为字段名不匹配报错,顺便修正掉。

修正后的完整代码

import pymysql 

try:
    # 修正charset为utf8,确保连接正常初始化
    conn = pymysql.connect(
        host='127.0.0.1', 
        port=3306, 
        user='root', 
        passwd='123456',
        db='home', 
        charset="utf8"
    )
    cursor = conn.cursor() 
    # 修正字段名拼写,同时加if not exists避免重复建表报错
    cursor.execute("""create table if not exists job_list(
        job varchar(30), 
        people varchar(30), 
        category varchar(30), 
        place varchar(30), 
        publish varchar(30)
    ) """) 
    # 插入数据时使用修正后的字段名
    cursor.execute("""INSERT INTO job_list(job,people,category,place,publish) VALUES (%s, %s, %s, %s, %s)""", 
                   ["算法工程师", "2018毕业生", "研发", "雅加达", "2018-03-28"]) 
    conn.commit() 
    print("数据插入成功!")
except pymysql.Error as e:
    # 异常时回滚事务
    if 'conn' in locals() and conn:
        conn.rollback()
    print(f"数据库操作出错:{str(e)}")
finally:
    # 确保关闭游标和连接,释放资源
    if 'cursor' in locals() and cursor:
        cursor.close()
    if 'conn' in locals() and conn:
        conn.close()

额外说明

如果修改后还是出现类似错误,可以检查以下几点:

  • 确认MySQL服务是否正常运行
  • 检查home数据库是否存在
  • 验证用户名和密码是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:43:48