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

如何解决Pandas导入CSV到MySQL报AttributeError无Password属性错误

报错根因

你遇到的AttributeError核心原因是DataFrame列名Password-hashed包含横杠,使用itertuples()遍历行时,Python会把row.Password-hashed解析为减法运算(row.Password减去hashed变量),而非访问Password-hashed列,因此抛出找不到Password属性的错误。

除此之外你的代码还有3处语法错误会导致后续运行失败:

  • SQL插入语句中列名误用单引号包裹,MySQL中单引号代表字符串字面量,列名需要用反引号(`)包裹或者不包裹
  • mysql-connector的参数占位符是%s而非?,同时11个插入列需要对应11个占位符,原代码只写了3个占位符,参数数量不匹配
  • itertuples()默认会把索引作为第一个返回值,直接按属性取会导致参数错位

修复步骤

  1. 先把带特殊符号的列名重命名,或者用getattr()方法取值,推荐直接重命名避免后续访问问题
  2. 修正SQL语句的列名包裹符和占位符
  3. 调整参数传递方式,避免itertuples的索引干扰
  4. 优化提交逻辑,批量提交减少IO开销

修复后完整代码

import mysql.connector
import pandas as pd

# 读取CSV并重命名带横杠的列,避免属性访问错误
data = pd.read_csv('OnePassTesters.csv')
df = pd.DataFrame(data, columns=[
    'Login', 'Name', 'Email', 'Mobile', 'Residence', 'Password-hashed', 'CPF', 'HDB', 'TP', 'DBS', 'FairPrice'])
# 重命名带特殊符号的列
df = df.rename(columns={"Password-hashed": "Password_hashed"})
print(df)

db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="1234",
    database="OnePass"
)
cursor = db.cursor()

# 修正SQL语句:列名用反引号,占位符用%s,数量和列数匹配
insert_sql = '''
INSERT INTO OnePass.user_info (`Login_ID`,`User_Name`,`User_Email`,`User_Mobile`,`User_Residence`,
`User_Password`, `CPF`,`HDB`,`TP`,`DBS`,`FairPrice`) 
VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
'''

# 批量插入效率更高,跳过索引避免参数错位
for row in df.itertuples(index=False):
    cursor.execute(insert_sql,
                   (row.Login,
                    row.Name,
                    row.Email,
                    row.Mobile,
                    row.Residence,
                    row.Password_hashed,
                    row.CPF,
                    row.HDB,
                    row.TP,
                    row.DBS,
                    row.FairPrice)
                   )
# 批量提交,不用每次循环提交
db.commit()
cursor.close()
db.close()

可选简化方案

如果不想重命名列,可以用getattr()直接取值,把取密码的部分换成getattr(row, 'Password-hashed')即可,不需要修改列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 19:27:02