Pas sûr de ce que je manque ici mais ce code fonctionne sans aucun message d'erreur, mais il n'y a rien dans la table. Je charge une valeur CSV dans trois colonnes dans la table 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"
J'apprécierais que quelqu'un d'autre puisse jeter un coup d'œil.
Je vous remercie.
Je pense que vous devez faire mydb.commit()
tout l'insertion dans.
Quelque chose comme ça
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"
Si c'est un bloc de données de pandas, vous pouvez faire:
csv_data.to_sql=(con=mydb, name='<the name of your table>',
if_exists='replace', flavor='mysql')
pour éviter l'utilisation de la variable for
.
La réponse ci-dessus semble bonne. Mais une autre façon de faire consiste à ajouter l'option de validation automatique avec la connexion à la base de données. Cela valide automatiquement toutes les autres opérations effectuées dans la base de données, évitant ainsi l’utilisation de la mention sql.commit()
à chaque fois.
mydb = MySQLdb.connect(Host='localhost',
user='root',
passwd='',
db='mydb',autocommit=true)
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()