Carga datos CSV en MySQL en Python

No estoy seguro de lo que me estoy perdiendo aquí, pero este código se ejecuta sin ningún mensaje de error, pero no hay nada en la tabla. Estoy cargando los valores CSV en tres columnas en la tabla mysql

import csv import MySQLdb mydb = MySQLdb.connect(host='localhost', user='root', passwd='', db='mydb') cursor = mydb.cursor() csv_data = csv.reader(file('students.csv')) for row in csv_data: cursor.execute('INSERT INTO testcsv(names, \ classes, mark )' \ 'VALUES("%s", "%s", "%s")', row) #close the connection to the database. cursor.close() print "Done" 

Apreciaría si alguien más pudiera echar un vistazo.

Gracias.

Creo que tienes que hacer mydb.commit() todo el inserto en.

Algo como esto

 import csv import MySQLdb mydb = MySQLdb.connect(host='localhost', user='root', passwd='', db='mydb') cursor = mydb.cursor() csv_data = csv.reader(file('students.csv')) for row in csv_data: cursor.execute('INSERT INTO testcsv(names, \ classes, mark )' \ 'VALUES("%s", "%s", "%s")', row) #close the connection to the database. mydb.commit() cursor.close() print "Done" 

La respuesta anterior parece buena. Pero otra forma de hacerlo es agregar la opción de confirmación automática junto con db connect. Esto confirma automáticamente todas las demás operaciones realizadas en la db, evitando el uso de mencionar sql.commit() cada vez.

  mydb = MySQLdb.connect(host='localhost', user='root', passwd='', db='mydb',autocommit=true) 

Si es un dataframe de pandas, podrías hacer:

Enviando los datos

 csv_data.to_sql=(con=mydb, name='', if_exists='replace', flavor='mysql') 

Para evitar el uso de la.

  from __future__ import print_function import csv import MySQLdb print("Enter File To Be Export") conn = MySQLdb.connect(host="localhost", port=3306, user="root", passwd="", db="database") cursor = conn.cursor() #sql = 'CREATE DATABASE test1' sql ='''DROP TABLE IF EXISTS `test1`; CREATE TABLE test1 (policyID int, statecode varchar(255), county varchar(255))''' cursor.execute(sql) with open('C:/Users/Desktop/Code/python/sample.csv') as csvfile: reader = csv.DictReader(csvfile, delimiter = ',') for row in reader: print(row['policyID'], row['statecode'], row['county']) # insert conn = MySQLdb.connect(host="localhost", port=3306, user="root", passwd="", db="database") sql_statement = "INSERT INTO test1(policyID ,statecode,county) VALUES (%s,%s,%s)" cur = conn.cursor() cur.executemany(sql_statement,[(row['policyID'], row['statecode'], row['county'])]) conn.escape_string(sql_statement) conn.commit()