【问题标题】:data is not inserting in my table数据未插入我的表中
【发布时间】:2014-05-19 07:59:04
【问题描述】:
import MySQLdb
import csv
mydb = MySQLdb.connect(host='localhost',user='root',passwd='root', db='kabir')
cursor = mydb.cursor()

data = csv.reader(file('data.csv'))

#cursor.execute('create table actors(name varchar(20),age integer)')                                                                                                                                                               
for row in data:
    cursor.execute('INSERT INTO actors(name,age) VALUES(%s %s)' ,row)
mydb.commit()
cursor.close()

【问题讨论】:

  • 您是否尝试关闭数据库:mydb.close()
  • @ChristianAichinger 虽然这是一个很好的收获,但这不是问题所在..请检查下面的答案。
  • 回溯(最近一次调用最后):文件“load.py”,第 13 行,在 cursor.execute('INSERT INTO actor(name,age) VALUES(%s, %s )' ,row) 文件“/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py”,第 159 行,在执行查询 = 查询 % db.literal(args) 类型错误:格式字符串的参数不足
  • @user3505729 我认为 csv 文件中的第一行是列标题,如果“年龄”列不是整数,所以它会给你一个错误,它不能插入字符串到数据库中的整数列。能否请您粘贴 csv 文件?

标签: python mysql csv


【解决方案1】:

您没有在 %s 和 %s 之间指定逗号。将其更改为:

cursor.execute('INSERT INTO actors(name,age) VALUES(%s, %s)' ,row)

然后尝试..

【讨论】:

  • @kabir 我认为 csv 文件中的第一行是列标题,如果“年龄”列不是整数,所以它会给你一个错误,它不能插入字符串到数据库中的整数列。能否请您粘贴 csv 文件?
  • 第一列是姓名,第二列是年龄
  • 将标题行包含在 csv 文件中的字段名称
  • @Kabir 如果它包含标题,您应该跳过它,因为它会与插入整数列的字符串发生冲突。添加:data = list(data)[1:]data = csv.reader(file('data.csv')) 之后转义第一行(标题行)
  • csv 文件应以标题行开头,然后每行包含用逗号分隔的值,因此应为:name,age a,24 b,24 c,52 d,88
猜你喜欢
  • 2017-06-05
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
相关资源
最近更新 更多