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

Trying to import csv into MySQL with pymysql and Python version 3

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

我已经阅读了所有其他可能的 post 并尝试了很多建议,但我无法让它发挥作用。我可以让它与 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)

有什么想法吗???

提前致谢!!

对我来说很有效

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()

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

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")