【问题标题】:TypeError: not enough arguments for format string (load data from csv into mysql using pyhton)TypeError:格式字符串的参数不足(使用 python 将数据从 csv 加载到 mysql 中)
【发布时间】:2019-11-07 21:11:28
【问题描述】:

我尝试使用 python 脚本将数据从 csv 文件加载到 mysql 数据库中。当我运行代码时,我得到了关于字符串的错误。

错误:TypeError:格式字符串的参数不足

df = pd.read_csv('testing.csv', delimiter=';', skiprows = 4)
print(df)

for row in df:

 cursor.execute('INSERT INTO FIRMS(ID, \
                REGISTRATION_NUMBER, NAME, DATE_ESTABLISHED, ADDRESS, PHONE_NO, FAX_NO, EMAIL, STATUS, POSTAL_CODE, DISTRICT, STATE )'\
                     'VALUES("%s", "%s", "%s","%s","%s","%s","%s","%s","%s","%s","%s","%s")',
                     row)

df.to_pymysql("FIRMS", db , flavor='pymysql', if_exists='append')
db.commit()
cursor.commit()

有解决这个问题的建议吗?提前谢谢你。

【问题讨论】:

  • 什么是len(row),它是否与您的INSERT 语句中%s 的数量相匹配?
  • 是的,它与 INSERT 语句中的 %s 数匹配。根据我的理解,%s 指的是公司表中的列数。我实际上是 python 中的新手,并且mysql

标签: python mysql pandas


【解决方案1】:

这里的问题是您试图将一个列表传递到它想要一个元组的地方。这应该可以通过将 row 转换为这样的元组来解决:

cursor.execute('INSERT INTO FIRMS(ID, \
            REGISTRATION_NUMBER, NAME, DATE_ESTABLISHED, ADDRESS, PHONE_NO, FAX_NO, EMAIL, STATUS, POSTAL_CODE, DISTRICT, STATE )'\
                 'VALUES("%s", "%s", "%s","%s","%s","%s","%s","%s","%s","%s","%s","%s")',

                tuple(row))

这应该会为你解决问题

【讨论】:

  • 我尝试了这个建议,但仍然出现错误:TypeError: not all arguments convert during string formatting
猜你喜欢
  • 1970-01-01
  • 2018-06-07
  • 2021-04-01
  • 2019-01-17
  • 2012-06-24
  • 2017-12-18
  • 2015-10-16
  • 1970-01-01
相关资源
最近更新 更多