文章目录
- 前言
- 步骤
- 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)
self.commit()
print("\n数据植入完成")
这里sql语句是指将值插入weather_year_db这个表中,根据自己要求更改表名
sql = """insert into weather_year_db values{}""".format(data_6)
6. 定义一个确认事务运行
def commit(self):
def commit(self):
#定义一个确认事务运行
self.connect.commit()
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)
self.commit()
这一句,根据自己要求更改表名。这是为了防止数据库里面已经有这个表,所以先删除这个表
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)
self.commit()
print("\n数据植入完成")
def commit(self):
#定义一个确认事务运行
self.connect.commit()
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)
self.commit()
#运行程序,记得要先调用创建数据的类,在创建写入数据的类
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 数据库并进行查询