pandas连接mysql数据库

一、连接数据库

from sqlalchemy import create_engine
import pandas as pd
db = create_engine('mysql+pymysql://root:password@host:端口号')

db = create_engine('mysql+pymysql://{user}:{password}@{host}:{port}'
               .format(user = 'root',
                       host = 'host',
                       password = 'password',
                       port = 端口号))

二、读数据库数据

执行一个任意的 SQL 查询,并把结果直接读取到一个 DataFrame 中。它允许你传递一个 SQL 查询字符串,这个查询可以是任何有效的 SQL 语句,返回的结果集会被 pandas 用来创建 DataFrame。
#sql = "select * from 数据库.数据表"
#data = pd.read_sql(sql,db)
pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)

执行一个 SQL 查询,但它通常被用于查询的参数化。read_sql_query 允许你传递一个 SQL 查询,并且可以包含参数,这些参数随后可以通过 params 参数传递。
pandas.read_sql_query(sql, con, index_col=None, params=None, parse_dates=None, columns=None, chunksize=None)

读取一个完整的 SQL 表,并将其转换为 DataFrame。与前两者不同,read_sql_table 不需要一个 SQL 查询字符串,而是直接读取整个表的内容。
pandas.read_sql_table(table_name, con, schema=None, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)

三、set_option

#显示所有列
pd.set_option('display.max_columns', None)
# #显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)

四、to_sql

to_sql(frame, name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None, method=None)
# frame : DataFrame, Series格式数据
# name是表名
# con是数据库连接
# schema: 相应数据库的引擎,不设置则使用数据库的默认引擎,如mysql中的innodb引擎
# if_exists:表如果存在怎么处理,fail: 如果表存在,do nothing。 - replace: 如果表存在, 先drop表,然后重建表并写入数据。原表数据会丢失,需要账号对数据库有drop create权限。 - append: 在原来的表追加数据,如果表不存在就创建在插入数据。
# index=False:不插入索引index,为True时索引也将作为数据写入数据表
# index_label:当上一个参数index为True时,设置写入数据表时index的列名称
# chunsize:设置整数,如20000,一次写入数据时的数据行数量,当数据量很大时,需要设置,否则会链接超时写入失败。

五、多个数据表merge

from functools import reduce
1、result=[query_mydata(data,2),query_mydata(data,3),query_mydata(data,4)]
2、result = reduce(lambda x,y:pd.merge(1,2,on='vin',how='left'),result)

六、pandas条件查询

使用多个条件进行筛选:你可以结合多个条件来筛选 DataFrame 中的数据,使用 & 表示“与”,| 表示“或”。
filtered_df = df[(df['A'] > 2) & (df['B'].str.startswith('a'))]
使用 isin() 方法:用于筛选某列中包含特定值的行。
filtered_df = df[df['B'].isin(['apple', 'banana'])]
使用 query() 方法:通过字符串表达式查询数据,可以更灵活地编写条件。
filtered_df = df.query('A > 2 and B.str.startswith("a")')
使用 loc() 方法:通过标签对行和列进行访问和赋值,可以更精确地选择特定行和列。
filtered_df = df.loc[df['A'] > 2, ['A', 'B']]

七、pandas数据导出

导出为 CSV 文件:
df.to_csv('output.csv', index=False)  # 将 DataFrame 导出为 CSV 文件,不包含行索引
导出为 Excel 文件:
df.to_excel('output.xlsx', index=False)  # 将 DataFrame 导出为 Excel 文件,不包含行索引
导出为 JSON 文件:
df.to_json('output.json')  # 将 DataFrame 导出为 JSON 文件
导出为 SQL 数据库:
import sqlite3
conn = sqlite3.connect('data.db')
df.to_sql('table_name', conn, index=False, if_exists='replace')  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值