1.数据存储在实际工作中,常涉及到利用Pandas *** 作Mysql数据库进行数据读取与数据存储,借此通过本篇文章,加深对该知识点的理解与应用,便于日后的学习复盘
将DataFrame中的数据保存到数据库的对应表中
涉及的知识点
1.需要导入安装SQLAlchemy库
from sqlalchemy import create_engine
2.创建数据库对象
用法:
engine = create_engine('dialect+driver://username:password@host:port/database')
参数说明:
dialect: 数据库类型
driver: 数据库驱动选择
username: 数据库用户名
password: 用户密码
host: 服务器地址
port: 端口
database: 数据库
示例:
ms_engine = create_engine("mysql+pymysql://root:123456@localhost:3306/test")
3.to_sql()方法
import pandas as pd
from sqlalchemy import create_engine
DATABASE = {
'69': {
'host': 'localhost',
'user': 'root',
'password': '123456',
'database': 'test',
'port': 3306
}
}
# 连接哪台服务器
TB_CONNECT = "69"
DATABASE = DATABASE[TB_CONNECT]
def save_data_to_mysql(df, table_name):
"""
将一个DataFrame保存至数据库
参数说明:
df: 一个DataFrame对象
table_name: 需要存入数据库的表名,字符串类型
"""
try:
ms_engine = create_engine(
'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(
DATABASE['user'], DATABASE['password'], DATABASE['host'],
DATABASE['port'], DATABASE['database']))
df.to_sql(table_name, ms_engine, if_exists='replace', index=False)
except Exception as e:
raise Exception("保存数据时发生错误:" + str(e))
finally:
ms_engine.dispose()
df_res = pd.DataFrame([[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
],columns=['A','B','C','D'])
# 将df_res数据存入到test数据库的df_result表中
save_data_to_mysql(df_res,'df_result')
df_res
利用save_data_to_mysql函数将df_res数据存入到test数据库的df_result表中
2.数据读取涉及的知识点
1.需要导入安装pymysql包,用于连接MySQL服务器
import pymysql
2.read_sql()方法
import pandas as pd
import pymysql
DATABASE = {
'69': {
'host': 'localhost',
'user': 'root',
'password': '123456',
'database': 'test',
'port': 3306
}
}
# 连接哪台服务器
TB_CONNECT = "69"
DATABASE = DATABASE[TB_CONNECT]
def get_data_from_mysql(table_name=None):
"""
从数据库读取一张完整的表并返回该表对应的DataFrame
参数说明:
table_name: 数据库中存放的表名,字符串类型
"""
try:
con = pymysql.connect(host=DATABASE['host'],
user=DATABASE['user'],
password=DATABASE['password'],
database=DATABASE['database'],
port=DATABASE['port'])
df = pd.read_sql("select * from `{}`".format(table_name),con)
return df
except Exception as e:
raise Exception("读取数据时发生错误:" + str(e))
finally:
con.close()
# 将test数据库的df_result表导入到名为df_new_result的DataFrame中
df_new_result = get_data_from_mysql('df_result')
df_new_result
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)