码迷,mamicode.com
首页 > 数据库 > 详细

Python读取CSV文件并存储到MySQL

时间:2019-11-02 17:20:24      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:格式   cti   ace   arc   sts   ==   create   import   快速   

在项目中对后台进行测试时,经常会遇到要在数据库新增数据,那么如何快速新增数据来提高工作效率呢?

现整理如下:

代码内容(csv_to_mysql.py):

# coding=utf-8
import pymysql

file_path = "export.csv"
table_name = "export"
try:
    con = pymysql.connect(user="root",
                          passwd="123456",
                          db="test01",
                          host="localhost",
                          local_infile=1)
    con.set_charset(utf8)
    cur = con.cursor()
    cur.execute("set names utf8")
    cur.execute("SET character_set_connection=utf8;")

    with open(file_path, r, encoding=utf8) as f:
        reader = f.readline()
        print(reader)
        # 做成列表
        devide = reader.split(,)
        # 去除最后的换行符
        devide[-1] = devide[-1].rstrip(\n)
        print(devide)

    column = ‘‘
    for dd in devide:
        # 如果标题过长,只能存成text格式
        if dd == "标题":
            column = column + dd +  TEXT,
        else:
            column = column + dd +  varchar(255),

    # 去除最后一个多余的,
    col = column.rstrip(,)
    # print(column[:-1])

    create_table_sql = create table if not exists {} ({}) DEFAULT CHARSET=utf8.format(table_name, col)
    print(create_table_sql)
    data = LOAD DATA LOCAL INFILE \‘ + file_path + \‘REPLACE INTO TABLE  + table_name +  CHARACTER SET UTF8 FIELDS TERMINATED BY \‘,\‘ ENCLOSED BY \‘\"\‘ LINES TERMINATED BY \‘\n\‘ IGNORE 1 LINES;
    cur.execute(create_table_sql)
    cur.execute(data.encode(utf8))
    print(cur.rowcount)
    con.commit()
except:
    print("发生错误")
    con.rollback()

finally:
    cur.close()
    con.close()

运行结果:

技术图片

 以上是以本地数据库作为例子,实际工作中可根据自己的需求修改数据库连接和SQL语句

Python读取CSV文件并存储到MySQL

标签:格式   cti   ace   arc   sts   ==   create   import   快速   

原文地址:https://www.cnblogs.com/wanyuan/p/11783112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!