2017-05-03 112 views
1

我是python.py的新手,我想用mysql.connector和python連接mysql。我想打開一個csv,然後把它上傳到mysql數據庫。我用的是python版本:3.6.0用python連接到mysql並上傳csv

我已經試過這一個:

import csv 
import mysql.connector 

cnx = mysql.connector.connect(user='', password='', 
           host='127.0.0.1', 
           database='') 
csv_data = csv.reader(file('12_13.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") 

我收到此錯誤:

Traceback (most recent call last): File ".\uploadtomysql.py", line 7, in csv_data = csv.reader(file('12_13.csv')) NameError: name 'file' is not defined

謝謝!

回答

0

試試這個:

csv.reader(filename, delimiter=',') 
0

你所得到的錯誤是,'file' is not defined。這是因爲您正在傳遞一個名爲file的變量,該變量未在程序中的任何位置定義(或導入)。您可能打算將file設置爲您想要讀取的.csv文件。所以,第一步是打開一個文件:

file = open('12_13.csv', 'rb') # open the file in read binary mode 
... 
file.close() 

或更好,但打開上下文管理器的文件,這意味着一旦執行退出該塊它會自動關閉:

with open('12_13.csv', 'rb') as f: 
    csv_data = csv.reader(f) # No NameError 
    ... 
f # raises NameError and file is closed 

我沒有」運行代碼,但這應該可以解決您提到的錯誤,或者至少可以讓您朝正確的方向發展。

您還將遇到cursor未定義的問題。您需要創建一個新的光標cnx.cursor()

最後,mydb也未定義,因此會引發錯誤。我不認爲你需要在這方面做出承諾,但我不能肯定地說。對於這種控制,我建議使用一個ORM,如SQLAlchemy