文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

数据分析| Pandas200道练习题,使用Pandas连接MySQL数据库

2023-09-06 17:17

关注

文章目录


在这里插入图片描述

通过pandas实现数据库的读,写操作时,首先需要进行数据库的连接,然后通过调用pandas所提供的数据库读写函数与方法来实现数据库的读写操作。

Pandas提供了3个函数用于数据库的读操作

Pandas提供了1个函数用于数据库的写操作

编码环境

Jupyter Notebook

依赖包

  • pymysql
  • sqlalchemy 该模块 是在使用read_sql_table() 函数时必须要用的模块

安装包

pip install pymysqlpip install sqlalchemy

read_sql_query()的使用

参数

pd.read_sql_query(    sql,  # 需要执行查询的sql语句    con,  # 数据库的连接    index_col=None, 字符串或字符串列表,可选,默认值:无    coerce_float: 'bool' = True, 尝试将非字符串,非数字对象(如decimal.Decimal)的值转换为浮点值    params=None,    parse_dates=None,    chunksize: 'int | None' = None,    dtype: 'DtypeArg | None' = None,)

pd.read_sql_query() 函数返回的数据类型时DataFrame

案例与使用

import pandas as pd import pymysql  # 导入操作mysql的数据包import sqlalchemy # 使用pymysql进行连接数据库db = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,charset='utf8',database='comment_v1')# user   用户名# password 密码# host 端口号# database 数据库名# charset 编码格式# 编写sql语句sql = 'select * from user_comment'# 通过read_sql_query函数进行查询sql_query_data = pd.read_sql_query(sql=sql,con=db)sql_query_data

在这里插入图片描述

read_sql_table()的使用

使用read_sql_table() 函数我们需要使用sqlalchemy 模块进行连接数据库,通过这个模块我们才可以对某一个表进行查询。

在使用其他的驱动程序的时候,会报NotImplementedError错误。

NotImplementedError: read_sql_table only supported for SQLAlchemy connectable.

参数

pd.read_sql_table(    table_name: 'str', # 数据库名称    con,               # 数据库连接    schema: 'str | None' = None,    index_col: 'str | Sequence[str] | None' = None,    coerce_float: 'bool' = True,    parse_dates=None,    columns=None,    chunksize: 'int | None' = None,)

read_sql_table() 函数返回DataFrame类型
案例与使用

# 使用sqlalchemy连接数据库,依次设置sql_query_db = sqlalchemy.create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/comment_v1")# mysql+pymysql://root:123456@127.0.0.1:3306/comment_v1"# mysql 连接的数据库类型# pymysql 连接数据库的驱动# root 用户名# 123456 密码# 127.0.0.1 数据库地址# 3306端口号 # comment_v1连接的数据库名称# 通过read_sql_table table = pd.read_sql_table(table_name='user_comment',con=sql_query_db)table

在这里插入图片描述

read_sql() 函数的使用

read_sql()使用pymysql或者sqlalchemy对象都可以

参数

pd.read_sql(    sql, # sql语句    con, # 连接对象    index_col: 'str | Sequence[str] | None' = None,    coerce_float: 'bool' = True,    params=None,     parse_dates=None,    columns=None,    chunksize: 'int | None' = None,)

案例与使用

# 通过read_sql函数读取数据库的信息# 使用pymysql进行连接数据库db = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,charset='utf8',database='comment_v1')sql = 'select * from user_comment'read_sql = pd.read_sql(sql=sql,con=db)read_sql
# 通过read_sql函数读取数据库的信息# 使用pymysql进行连接数据库sql_query_db = sqlalchemy.create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/comment_v1")sql = 'select * from user_comment'read_sql = pd.read_sql(sql=sql,con=sql_query_db )read_sql

在这里插入图片描述

to_sql()写入数据库的操作

to_sql方法同样需要使用SQLAlchemy模块的支持
参数

df.to_sql(    name: 'str', # 表名称    con, # 数据库连接    schema=None,     if_exists: 'str' = 'fail',  # fail如果表已经存在就不执行写入,replace 如果表存在就删除原来的表,再进行写入,append代表在原有数据表中添加数据    index: 'bool_t' = True,  # 是否将行索引写入数据库中    index_label=None,    chunksize=None,    dtype: 'DtypeArg | None' = None,    method=None,)

案例与使用

# 使用sqlalchemy模块进行连接sql_query_db = sqlalchemy.create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/atguigudb")data = {    "A":[1,2,3,4],    "B":[6,7,8,9],    "C":[4,3,2,1]}df = pd.DataFrame(data)df.to_sql('to_sql_dome',con=sql_query_db,if_exists='append')# 测试,查询sql = "select * from to_sql_dome"read_df = pd.read_sql(sql=sql,con=sql_query_db)read_df

结果
在这里插入图片描述


如和删除和更新数据库中的数据,pandas官方并没有提供相应的函数,但是我们同样可以使用read_sql和read_sql_query来进行实现对数据的删除和修改(sql语句会执行,但是程序会报错),还可以通过原生python利用哦个pymysql中的execute()方法来执行对数据的删除和修改。
在实际生产过程中并不建议这样操作,因为在实际过程中数据对公司是非常重要的,作为一个数据分析师我们并不会拿到删除和更新操作的权限,数据分析也不会修改原数据,在进行分析和建模的所拿到的数据都是复制数据库的数据。

删除操作

删除to_sql_dome 表中A = 1的一行数据

sql = "DELETE FROM to_sql_dome WHERE A = 1;"read_df = pd.read_sql(sql=sql,con=sql_query_db)

执行上面的代码以后会报错 使用pymsql和sqlalchemy两种的报错不一样

sqlalchemy:ResourceClosedError: This result object does not return rows. It has been closed automatically.pymsql:TypeError: 'NoneType' object is not iterable

在这里插入图片描述

更新操作

sql = "update to_sql_dome set B=2 where A = 4"read_df = pd.read_sql(sql=sql,con=db)

执行后同样也会报错,使用pymsql和sqlalchemy两种的报错不一样

sqlalchemy:ResourceClosedError: This result object does not return rows. It has been closed automatically.pymsql:TypeError: 'NoneType' object is not iterable```rceClosedError: This result object does not return rows. It has been closed automatically.

在这里插入图片描述

最后在强调一下,pandas并不推荐使用read_sql和read_sql_query来进行实现对数据的删除和更新,如果想对数据进行操作,可以使用原生的python利用pymysql进行操作。

总结:

通过上面的四个方法我们发现Pandas操作数据库还是很方便的:

在这里插入图片描述

来源地址:https://blog.csdn.net/qq_52007481/article/details/129077724

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯