将CSV文件导入MySQL数据库中

用python将csv文件导入MySQL数据库中重要用到了python中的pyMySQL模块

一、pyMySQL

  1. 作用

作为mysql客户端操作数据

      2.链接语法

 连接对象 = pymysql.connect(

        host='连接地址 localhost , ip 地址',

        port=端口号,默认3306,

        user='用户名',

        password='密码',

        database='数据库名',

        charset='utf8' )

3.操作流程

 a.导入pymysql
b.使用pymysql的connect()方法连接数据,返回连接对象
c.使用连接对象创建游标对象(用于操作sql)
d.准备写sql语句(eg:select * from student)
e.使用游标对象执行sql(发送)(没有查询数据返回受影响的行数)
f.有查询数据使用游标获取
g.关闭游标(先)和数据库连接(后)

      二、具体代码

import pymysql

file_path = "exam.csv"  # 需要导入的csv文件
table_name = 'update_time_table'  # 目标数据库

try:
    con = pymysql.connect(user="root",
                          passwd="password",
                          db="数据库名称",
                          host="127.0.0.1",
                          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()

注:数据库链接信息需自己配置

你可能感兴趣的:(mysql,python)