Python使用Pandas库实现MySQL数据库的读写
1. 安装所需的库
在使用Python来实现MySQL数据库的读、写操作之前,需要确保已经安装了以下几个库:
- Pandas
- PyMySQL
- sqlalchemy
可以使用pip
命令来安装这些库,命令如下:
pip install pandas
pip install pymysql
pip install sqlalchemy
2. 连接到MySQL数据库
在Python中,可以使用sqlalchemy
库来连接到MySQL数据库。具体连接的方式如下:
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://username:password@host:port/database')
其中,需要将username
、password
、host
、port
、database
替换成对应的值,例如:
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test_db')
这个示例中连接到了本地的名为test_db
的MySQL数据库,用户名为root
,密码为123456
。
3. 读取MySQL数据库中的数据
连接到MySQL数据库之后,可以使用pandas
库的read_sql
函数来读取数据。具体操作如下:
import pandas as pd
df = pd.read_sql("SELECT * FROM table_name", con=engine)
其中,SELECT * FROM table_name
是SQL语句,用于查询table_name
表中的所有数据。con=engine
表示使用前面创建的MySQL连接。
例如,以下代码将会从名为user_info
的表中读取所有的数据,并将其存储到df
变量中:
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test_db')
df = pd.read_sql("SELECT * FROM user_info", con=engine)
4. 向MySQL数据库中写入数据
类似地,可以使用pandas
库的to_sql
函数向MySQL数据库中写入数据。具体操作如下:
df.to_sql(name='table_name', con=engine, if_exists='replace', index=False)
其中,name
参数用于指定要写入的表名,if_exists
参数用于指定当写入的表已经存在时该如何处理,常用的取值包括fail
、replace
、append
。index=False
表示不将DataFrame
的索引写入到MySQL数据库中。
例如,以下代码将会向名为user_info
的表中写入所有的数据,如果该表已经存在则会将其替换为DataFrame
中的数据:
df = pd.DataFrame({'name': ['Alice', 'Bob'], 'age': [20, 30]})
df.to_sql(name='user_info', con=engine, if_exists='replace', index=False)
示例1:从MySQL数据库中读取数据并筛选结果
假设我们要从数据库中读取所有年龄大于等于18岁的用户信息。可以使用以下代码:
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test_db')
df = pd.read_sql("SELECT * FROM user_info WHERE age >= 18", con=engine)
这段代码会从user_info
表中读取所有age >= 18
的用户信息,并将其存储到df
变量中。
示例2:向MySQL数据库中写入数据
假设我们要向数据库中添加一条新的用户信息,可以使用以下代码:
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test_db')
new_user = {'name': 'Charlie', 'age': 25}
df = pd.DataFrame([new_user])
df.to_sql(name='user_info', con=engine, if_exists='append', index=False)
这段代码会向user_info
表中添加一条名称为"Charlie"、年龄为25岁的新用户信息。如果user_info
表已经存在,则会在该表中追加一行数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python使用Pandas库实现MySQL数据库的读写 - Python技术站