基於python3.0的CSV文件入MySQL


    因為工作上臨時有個需求,需要將excel文件轉為csv並入MySQL。於是寫了一個這么一個小程序。在轉csv的時候打開csv文件,好多較長的數字自動轉換為了科學計數法,后來把列格式轉換為文本,再次打開還是科學計數法,我相信好多人都對這個問題很頭疼。不過我發現雖然打開是科學計數法但是轉完csv之后用python直接讀,讀到的是完整的數據,數據不是科學計數法,后幾位也不是0。以下是代碼部分,這個代碼支持所有表的數據寫入,只需要在csv的第一列寫上對應的庫中表的字段名。
代碼:

# _*_ coding:utf-8 _*_
import sys
import csv
def ExecuteSql(tablename,fieldname,list_date=[]):
    "將excel中數據寫入數據庫"
    db = pymysql.connect(host="150.3.3.3", port=3317,user="luwenjie8061",
                         passwd="Passw0rd_luwenjie646", db="SENSHG1")
    cursor = db.cursor()
    date = ""
    #將csv文件中的數據拼接成insertSQL中的格式
    for num in range(0,len(list_date)):
        date = date + "'" + str(list_date[num]) + "'" + ","
    date = date[0:len(date) - 1]
    sql = "insert into " + tablename + " (" + fieldname + ") " + \
          "values " + \
          " (" + \
          date.strip() + ")"
# 使用 cursor() 方法創建一個游標對象 cursor
    cursor.execute(sql)
    db.commit()        #注意:一定要提交才會寫入數據庫,寫入數據時不會自動提交
    db.close()
def read_CSV(path):
    fieldname = ""
    readeritem.extend([row for row in csv_files])
    #拼接出insertSQL中的字段名
    for num in range(0, len(readeritem[0])):
        fieldname = fieldname + readeritem[0][num] + ","
    fieldname = fieldname[0:len(fieldname) - 1]
    #獲取csv文件中每行數據,並寫入數據庫
    for lines in range(1, len(readeritem)):
        list_date = readeritem[lines]
        ExecuteSql(tablename,fieldname,list_date)
#參數讀取,即執行該python文件時,第一個參數是要寫入的表名,第二個參數是excel文件名
tablename = sys.argv[1]
file = sys.argv[2]
#file = r'C:\Users\盧文傑\Desktop\盧文傑\工作文件\TEST\各區報警點反饋信息匯總_V0.3.xlsx'
read_CSV(file)


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com