尝试使用pymysql和Python版本3将csv导入MySQL

时间:2016-03-17 19:05:52

标签: python-3.x pymysql

我想将一个简单的csv放入数据库中的MySQL表中。我知道可能还有其他方法可以做到这一点,但对于我所使用的系统,如果可能的话,我想坚持使用这种方法。

我已经阅读了所有其他可能的帖子,并尝试了很多建议,但我无法让它发挥作用。我可以使用python 2而不是3。

csv是

test1   test2
43.49   654.32
78.89   294.95

当我尝试不同的方法时,我似乎无法使语法正确并出现各种错误。

import csv 
import pymysql
db = pymysql.connect( host = '###.###.##.#',
      user = 'test',passwd = 'test')
cursor = db.cursor()
csv_data = csv.reader('c:/tmp/sample.csv')
next(csv_data)
for row in csv_data:
    cursor.execute('INSERT INTO test.table(test1, test2) VALUES(%s, %s)',row)

db.commit()
cursor.close()
print (Imported)

任何想法???

提前致谢!!

2 个答案:

答案 0 :(得分:0)

对我来说有效

import pymysql
import csv
db = pymysql.connect("localhost","root","12345678","data" )

cursor = db.cursor()
csv_data = csv.reader(open('test.csv'))
next(csv_data)
for row in csv_data:
    cursor.execute('INSERT INTO PM(col1,col2) VALUES(%s, %s)',row)

db.commit()
cursor.close()

答案 1 :(得分:0)

要回答我自己的问题,这对我有用:

import csv 
import pymysql
db = pymysql.connect( host = '###.###.##.#',
      user = 'test',passwd = 'test')
cursor = db.cursor()
f = csv.reader(open('c:/tmp/sample.csv'))
sql = """INSERT INTO test.table(test1,test2) VALUES(%s,%s)"""
next(f)
for line in f:
    line=[None if cell == '' else cell for cell in line]
    cursor.execute(sql, line)

db.commit()
cursor.close()
print ("Imported")