📋前言📋
💝博客:【红目香薰的博客_CSDN博客-计算机理论,2022年蓝桥杯,MySQL领域博主】💝
✍本文由在下【红目香薰】原创,首发于CSDN✍
🤗2022年最大愿望:【服务百万技术人次】🤗
💝Python初始环境地址:【Python可视化数据分析01、python环境搭建】💝
环境需求
环境:win10
开发工具:PyCharm Community Edition 2021.2
数据库:MySQL5.6
目录
Python可视化数据分析09、Pandas_MySQL读写
在Python中,最有名的ORM框架是SQLAlchemy。使用SQLAlchemy写入数据到数据库中的步骤如下:
导入SQLAlchemy模块的create_engine()函数和pandas()函数
创建引擎,其中传入的字符串格式为:数据库类型+Python连接mysql的库名://用户名:密码@IP地址:端口号/数据库名
使用Pandas下的io.sql模块下的to_sql()函数将DataFrame对象中的数据保存到数据库中
使用Pandas模块中的read_sql()函数读取数据库中的记录,并保存到DataFrame对象中
pip3 install sqlalchemy
pip3 install pymysql
1、打开MySQL服务
2、创建【mytest】数据库
3、创建【user】表
示例:
- import pandas as pd
- from sqlalchemy import create_engine # 引入create_engine方法
-
- df = pd.DataFrame({"id": [1, 2, 3], "name": ["雷静", "小凤", "春梦"], "age": ["21", "22", "20"]})
- conn = create_engine('mysql+pymysql://root:12345678@localhost:3306/mytest?charset=utf8')
- # 将df对象保存到数据库名为mytest的库,名称为user的数据库表中
- pd.io.sql.to_sql(df, 'user', conn, schema='mytest', if_exists='append')
- # # 执行“select * from words;”SQL语句读取数据库中的数据
- df1 = pd.read_sql('select * from user;', con=conn)
- print(df1)
- import pandas as pd
- from sqlalchemy import create_engine # 引入create_engine方法
- from sqlalchemy.orm import sessionmaker
-
- conn = create_engine('mysql+pymysql://root:12345678@localhost:3306/mytest?charset=utf8')
- # 修改-删除
- DB_Session = sessionmaker(bind=conn)
- session = DB_Session()
- # session.execute("insert into user values(3,0,'小龙女',22)")
- # session.execute("update user set name='晓凤' where id=2")
- session.execute("delete from user where id=4")
- session.commit()
- # # 执行“select * from words;”SQL语句读取数据库中的数据
- df = pd.read_sql('select * from user;', con=conn)
- print(df)
- import pandas as pd
- from sqlalchemy import create_engine # 引入create_engine方法
-
- conn = create_engine('mysql+pymysql://root:12345678@localhost:3306/mytest?charset=utf8')
- # # 执行“select * from words;”SQL语句读取数据库中的数据
- df = pd.read_sql('select * from user;', con=conn)
- print(df)
- # 基础信息
- print(df.info)
- # 查看列名
- print(df.columns)
- # 查看各列数据类型
- print(df.dtypes)
- # 查看下标
- print(df.index)
- # 数据浏览前2条
- print(df.head(2))
- # 查看name到age列
- print(df.loc[:, "name":"age"])
- # 基本统计
- print("最大年龄:", df.age.max())
- print("平均年龄:", df.age.mean())
- # 查询
- print(df[df.name == "春梦"])
- # 排序·True正序False倒序
- print(df.sort_values(by=["age"], ascending=False))
- # 在第二列【下标是1】添加列
- df.insert(1, "sex", "女")
- print(df)
- # 在最后添加列
- df["introduce"] = "巾帼"
- print(df)
- # 删除某行
- df = df.drop(1)
- print(df)
- # 替换
- value = pd.Series([1, "女", "雷静静", 20, "大眼姑娘"], index=["id", "sex", "name", "age", "introduce"])
- df.loc[0] = value
- value = pd.Series([4, "女", "小龙女", 18, "冰山美人"], index=["id", "sex", "name", "age", "introduce"])
- df.loc[3] = value
- print(df)
- # 条数
- print(len(df))
index id name age
0 0 1 雷静 21
1 1 2 小凤 22
2 2 3 春梦 20
0 0 1 雷静 21
1 1 2 小凤 22
2 2 3 春梦 20>
Index(['index', 'id', 'name', 'age'], dtype='object')
index int64
id int64
name object
age int64
dtype: object
RangeIndex(start=0, stop=3, step=1)
index id name age
0 0 1 雷静 21
1 1 2 小凤 22
name age
0 雷静 21
1 小凤 22
2 春梦 20
最大年龄: 22
平均年龄: 21.0
index id name age
2 2 3 春梦 20
index id name age
1 1 2 小凤 22
0 0 1 雷静 21
2 2 3 春梦 20
index sex id name age
0 0 女 1 雷静 21
1 1 女 2 小凤 22
2 2 女 3 春梦 20
index sex id name age introduce
0 0 女 1 雷静 21 巾帼
1 1 女 2 小凤 22 巾帼
2 2 女 3 春梦 20 巾帼
index sex id name age introduce
0 0 女 1 雷静 21 巾帼
2 2 女 3 春梦 20 巾帼
index sex id name age introduce
0 NaN 女 1 雷静静 20 大眼姑娘
2 2.0 女 3 春梦 20 巾帼
3 NaN 女 4 小龙女 18 冰山美人
3Process finished with exit code 0