基于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-2021 ITdaan.com