2012-04-14 55 views
28

Không chắc chắn những gì tôi đang thiếu ở đây nhưng mã này chạy mà không có bất kỳ thông báo lỗi nào, nhưng không có gì trong bảng. Tôi đang tải giá trị CSV trong ba cột vào bảng mysqlTải dữ liệu CSV vào MySQL bằng Python

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" 

Sẽ đánh giá cao nếu người khác có thể xem.

Cảm ơn bạn.

Trả lời

59

Tôi nghĩ bạn phải làm mydb.commit() tất cả việc chèn vào.

Something như thế này

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" 
+0

Cảm ơn công việc :) Nhưng bạn có biết tại sao giá trị là tất cả trong dấu nháy đơn trong cơ sở dữ liệu không? –

+4

Hãy thử '" chèn vào các giá trị testcsv (tên, lớp, đánh dấu) (% s,% s,% s) ", hàng' –

+0

@HelenNeely cũng nhớ chấp nhận câu trả lời và upvote. –

0

Nếu nó là một khung dữ liệu gấu trúc bạn có thể làm:

gửi dữ liệu

csv_data.to_sql=(con=mydb, name='<the name of your table>', 
    if_exists='replace', flavor='mysql') 

để tránh việc sử dụng các for.

+2

Có vẻ như bạn đã trích dẫn từ sách hướng dẫn? Thêm một tham chiếu trong trường hợp như vậy xin vui lòng, để mọi người có thể đọc trong trường hợp họ quan tâm (và để cung cấp cho các tài liệu tham khảo thích hợp cho các tác giả ban đầu). –

0
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() 
Các vấn đề liên quan