使用Python将给定 csv 格式的数据文件写入 Mysql 数据库中

python读取csv文件导入到MySQL

注意的是!!
我这里为了方便,使用的全部都是以字符串的格式进行储存的。

下次使用假如IP和数据库账号密码不同,则要变化conn_mysql()函数,数据源不同则变化filename,使用的数据源在当前文件夹。

import csv
import pymysql
import codecs  
import time

'''
python读取csv文件到mysql上
'''
class PyMysql:
    def __init__(self):
        self.db=input('请输入你想创建的数据库名称: ')
        self.table=input('请输入你想创建的表名称: ')
	
	#连接数据库
    def conn_mysql(self):
        conn=pymysql.connect(
            host='192.168.23.200',   #你的主机IP
            port=3306,    #主机端口,不能加双引号
            user='root',   #MySQL用户
            password='root',   #MySQL密码
            charset='utf8'   #使用的编码格式,不能使用  utf-8 ,不能加多一个横杠
        )
        return conn
	
	#创建数据库
    def create_db(self,cur):
        db=cur.cursor() #创建光标
        db.execute("create database if not exists {} character set utf8;".format(self.db))  #创建数据库
        db.execute("use {};".format(self.db))   #切换至改数据库
        cur.commit()  #一定要进行事务更新
        print('创建数据库成功')
        return cur
	
	#创建表
    def create_table_head(self,db,head):
            sql='create table if not exists {}('.format(self.table)  #创建表
            for i in range(0,len(head)):   
                sql+='{} varchar(100)'.format(head[i])
                if i!=len(head)-1: 
                    sql+=','
                sql+='\n'
            sql+=');'
            cur = db.cursor()   #创建光标
            cur.execute(sql)   #执行命令
            db.commit()  #一定要进行事务更新
            time.sleep(0.1)  
            print('创建表完成')

	#插入数据
    def insert_table_info(self,db,info):
        sql='insert into {} values ('.format(self.table)
        for i in range(0,len(info)):
            sql+='"{}" '.format(info[i])
            if i!=len(info)-1:
                sql+=','
        sql+=');'
        try:
            cur = db.cursor()
            cur.execute(sql)
            db.commit()  #一定要进行事务更新
            time.sleep(0.1)
            print('插入数据成功')
        except Exception as e:
            print('插入数据失败,失败原因',e)

	#创建表所需要的字段
    def table_head(self,filename):
        with codecs.open(filename=filename,mode='r',encoding='utf-8') as f:  
            reader=csv.reader(f)
            head=next(reader)
            return head

	#表需要的数据
    def table_info(self,db,filename):
        with codecs.open(filename=filename,mode='r',encoding='utf-8') as f:
            data=csv.reader(f)  
            for index,rows in enumerate(data):
                if index!=0:   #不要首行
                    row=rows
                    self.insert_table_info(db,row)


if __name__=='__main__':
    pysql=PyMysql()
    cur=pysql.conn_mysql()  #连接mysql数据库
    db=pysql.create_db(cur)  #创建数据库
    filename='air_data.csv' #插入数据的文件
    head=pysql.table_head(filename) #创建表需要的字段
    pysql.create_table_head(db,head)  #创建表
    pysql.table_info(db,filename)  #插入数据

你可能感兴趣的:(大数据,赛题库)