[Pandas] *** 作Mysql数据库

[Pandas]  *** 作Mysql数据库,第1张

在实际工作中,常涉及到利用Pandas *** 作Mysql数据库进行数据读取与数据存储,借此通过本篇文章,加深对该知识点的理解与应用,便于日后的学习复盘

1.数据存储 

将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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/724928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存