用于将批量数据插入mysql表的python脚本

时间:2014-09-08 16:12:22

标签: python mysql mysql-python

我正在编写一个用于将csv文件插入mysql表的python脚本。我遇到的问题是它只插入一行并在此之后终止。

#!/usr/bin/python

import sys
import csv 
import MySQLdb

db = MySQLdb.connect(host="localhost",user="root",passwd="password",db="AM")
cur = db.cursor()


f = open(sys.argv[1],'rt')
try:
    reader = csv.reader(f)
    headers = next(reader)
    for row in reader:
        col1 = row[0]
        col2 = row[1]
        col3 = row[2]
        col4 = row[3]
        col5 = row[4]
        col6 = row[5]
except:
     print sys.exc_info()


sql = "Insert ignore into my_table(col1, col2, col3, col4, col5, col6) values ('%s', '%s', '%s', '%s', '%s', '%s');" % (col1, col2, col3, col4, col5, col6)
try:
    cur.execute(sql)
    db.commit()
except:
    db.rollback()
finally:
    db.close() 

1 个答案:

答案 0 :(得分:0)

sql = "Insert ignore into table(a,b,c,d,e,f) values ('%s', '%s', '%c', '%s', '%s', '%s');" % (list1, list2, list3, list4, list5, list6)

你的桌子实际命名为" table&#34 ;?如果是这样,你应该用双引号括起来,如下所示:

sql = "Insert ignore into \"table\"(a,b,c,d,e,f) values ('%s', '%s', '%c', '%s', '%s', '%s');" % (list1, list2, list3, list4, list5, list6)

table是一个SQL关键字。