admin管理员组

文章数量:1794759

将CSV文件数据存入MySQL数据库的详细代码

将CSV文件数据存入MySQL数据库的详细代码

文章目录
  • 前言
  • 步骤
    • 1. 定义一个init方法,用于读取数据库
    • 2. 定义一个del类,用于运行完所有程序后关闭数据库和游标对象
    • 3. 读取csv文件的列索引,用于建立数据表时的字段
    • 4. 读取csv文件数据
    • 5. 在数据表中写入数据
    • 6. 定义一个确认事务运行
    • 7. 新创建数据表 【需要更改】
    • 8. 运行程序
    • 9. 封装函数
  • 完整代码
  • 补充

前言

想把之前存入CSV文件的天气数据读取出来放进MySQL数据库,于是新建了一个python文档 参照这篇教程读取csv文件写入mysql数据库 不需要其他准备,只要更改CSV文件地址,和创建的表格名字,各项属性即可 有需要更改的地方我会在下面直接标出来!!!

环境: vscode+MySQL python 首先导入两个库

import pymysql import pandas as pd 步骤 1. 定义一个init方法,用于读取数据库

【需要根据自己数据库的名字和密码更改代码】 def __init__(self): 账号 user=“root”, 密码password=“root” 要存储的数据库的名字 database=“weather” 若存入数据有中文,加上 charset=“utf8”

#定义一个init方法,用于读取数据库 def __init__(self): #读取数据库和建立游标对象 self.connect = pymysql.connect(host="127.0.0.1",port=3306,user="root",password="root",database="weather",charset="utf8") self.cursor = self.connect.cursor() 2. 定义一个del类,用于运行完所有程序后关闭数据库和游标对象

def __del__(self)::

#定义一个del类,用于运行完所有程序的时候关闭数据库和游标对象 def __del__(self): self.connect.close() self.cursor.close() 3. 读取csv文件的列索引,用于建立数据表时的字段

【更改CSV文件读取路径】 def read_csv_colnmus(self):

def read_csv_colnmus(self): #读取csv文件的列索引,用于建立数据表时的字段 csv_name='D:\\\\code\\\\python project\\\\pachong\\\\weather_project\\\\weather_year.csv' data = pd.read_csv(csv_name,encoding="utf-8") return data 4. 读取csv文件数据

【同上,更改CSV文件读取路径】 def read_csv_values(self):

def read_csv_values(self): #读取csv文件数据 csv_name='D:\\\\code\\\\python project\\\\pachong\\\\weather_project\\\\weather_year.csv' data = pd.read_csv(csv_name, encoding="utf-8") data_3 = list(data.values) return data_3 5. 在数据表中写入数据

【更改执行的sql语句】 def write_mysql(self):

def write_mysql(self): #在数据表中写入数据,因为数据是列表类型,把他转化为元组更符合sql语句 for i in self.read_csv_values(): #因为数据是迭代列表,所以用循环把数据提取出来 data_6 = tuple(i) sql = """insert into weather_year_db values{}""".format(data_6) self.cursor.execute(sql) selfmit() print("\\n数据植入完成") 这里sql语句是指将值插入weather_year_db这个表中,根据自己要求更改表名 sql = """insert into weather_year_db values{}""".format(data_6) 6. 定义一个确认事务运行

def commit(self):

def commit(self): #定义一个确认事务运行 self.connectmit() 7. 新创建数据表 【需要更改】

def create(self):

def create(self): #若已有数据表weather_year_db,则删除 query="drop table if exists weather_year_db;" #更改表明 self.cursor.execute(query) #创建数据表,用刚才提取的列索引作为字段 data_2 = self.read_csv_colnmus() #根据自己要创建的表格更改sql语句 sql = "create table if not exists weather_year_db(date_time DATETIME not null,high varchar(50) not null,low varchar(50) not null,weather varchar(50) not null,primary key(date_time))default charset=utf8;" self.cursor.execute(sql) selfmit()

这一句,根据自己要求更改表名。这是为了防止数据库里面已经有这个表,所以先删除这个表

query="drop table if exists weather_year_db;" #更改表明

再根据自己要创建的表格更改sql语句

8. 运行程序

记得要先调用创建数据的类,再创建写入数据的类 def run(self):

#运行程序,记得要先调用创建数据的类,在创建写入数据的类 def run(self): self.create() self.write_mysql() 9. 封装函数

将以上函数封装到一个类里,用main函数运行以上代码

#最后用一个main()函数来封装 def main(): sql = Mysql_csv() sql.run() 完整代码 # """ 配置数据库 """ # HOST='127.0.0.1' # PORT='3306' # USERNAME='root' # PASSWORD='root' # DATABASE='ul' # select * from character import pymysql import pandas as pd #用面向对象的方式编写,更加熟悉面向对象代码风格 class Mysql_csv(object): #定义一个init方法,用于读取数据库 def __init__(self): #读取数据库和建立游标对象 self.connect = pymysql.connect(host="127.0.0.1",port=3306,user="root",password="root",database="weather",charset="utf8") self.cursor = self.connect.cursor() #定义一个del类,用于运行完所有程序的时候关闭数据库和游标对象 def __del__(self): self.connect.close() self.cursor.close() def read_csv_colnmus(self): #读取csv文件的列索引,用于建立数据表时的字段 csv_name='D:\\\\code\\\\python project\\\\pachong\\\\weather_project\\\\weather_year.csv' data = pd.read_csv(csv_name,encoding="utf-8") return data def read_csv_values(self): #读取csv文件数据 csv_name='D:\\\\code\\\\python project\\\\pachong\\\\weather_project\\\\weather_year.csv' data = pd.read_csv(csv_name, encoding="utf-8") data_3 = list(data.values) return data_3 def write_mysql(self): #在数据表中写入数据,因为数据是列表类型,把他转化为元组更符合sql语句 for i in self.read_csv_values(): #因为数据是迭代列表,所以用循环把数据提取出来 data_6 = tuple(i) sql = """insert into weather_year_db values{}""".format(data_6) self.cursor.execute(sql) selfmit() print("\\n数据植入完成") def commit(self): #定义一个确认事务运行 self.connectmit() def create(self): #若已有数据表weather_year_db,则删除 query="drop table if exists weather_year_db;" self.cursor.execute(query) #创建数据表,用刚才提取的列索引作为字段 data_2 = self.read_csv_colnmus() sql = "create table if not exists weather_year_db(date_time DATETIME not null,high varchar(50) not null,low varchar(50) not null,weather varchar(50) not null,primary key(date_time))default charset=utf8;" self.cursor.execute(sql) selfmit() #运行程序,记得要先调用创建数据的类,在创建写入数据的类 def run(self): self.create() self.write_mysql() #最后用一个main()函数来封装 def main(): sql = Mysql_csv() sql.run() if __name__ == '__main__': main() 补充

另外,vscode有两个连接数据库的很好用的插件,建议下载下来试试,可以直接在vscode里面查看数据库的信 可以自己查查如何安装,做个推荐 使用 Visual Studio Code 链接 MySql 数据库并进行查询

本文标签: 代码数据库文件数据详细