使用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)  #插入数据

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python的pandas库和MySQLdb库来实现将csv文件导入MySQL数据库的操作,具体步骤如下: 1. 安装pandas库和MySQLdb库: ```python !pip install pandas !pip install mysqlclient ``` 2. 导入需要的库: ```python import pandas as pd import MySQLdb ``` 3. 读取csv文件并将数据存储在DataFrame对象: ```python data = pd.read_csv('your_csv_file.csv') ``` 4. 建立与MySQL数据库的连接: ```python conn = MySQLdb.connect(host='your_host', port=your_port, user='your_username', passwd='your_password', db='your_database') ``` 5. 将数据写入MySQL数据库: ```python data.to_sql(name='your_table_name', con=conn, if_exists='replace', index=False) ``` 以上代码,name参数表示要写入的表名,con参数表示与数据库建立的连接对象,if_exists参数表示如果表已经存在则替换原有表,index参数表示不需要将DataFrame对象的索引写入数据库。 完整代码如下: ```python import pandas as pd import MySQLdb # 读取csv文件并将数据存储在DataFrame对象 data = pd.read_csv('your_csv_file.csv') # 建立与MySQL数据库的连接 conn = MySQLdb.connect(host='your_host', port=your_port, user='your_username', passwd='your_password', db='your_database') # 将数据写入MySQL数据库 data.to_sql(name='your_table_name', con=conn, if_exists='replace', index=False) # 关闭连接 conn.close() ``` 注意:在执行以上代码之前,需要先在MySQL数据库创建好对应的表,使其与csv文件的列名一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值