python基于Pandas读写MySQL数据库
作者:三只松鼠 发布时间:2024-01-16 18:34:19
标签:Python,Pandas,MySQL
目录
1、read_sql_query 读取 mysql
2、to_sql 写入数据库
要实现 pandas 对 mysql 的读写需要三个库
pandas
sqlalchemy
pymysql
可能有的同学会问,单独用 pymysql 或 sqlalchemy 来读写数据库不香么,为什么要同时用三个库?主要是使用场景不同,个人觉得就大数据处理而言,用 pandas 读写数据库更加便捷。
1、read_sql_query 读取 mysql
read_sql_query 或 read_sql 方法传入参数均为 sql 语句,读取数据库后,返回内容是 dateframe 对象。普及一下:dateframe 其实也是一种数据结构,类似 excel 表格一样。
import pandas
from sqlalchemy import create_engine
class mysqlconn:
def __init__(self):
mysql_username = 'root'
mysql_password = '123456'
# 填写真实数库ip
mysql_ip = 'x.x.x.x'
port = 3306
db = 'work'
# 初始化数据库连接,使用pymysql库
self.engine = create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format(mysql_username, mysql_password, mysql_ip, port,db))
# 查询mysql数据库
def query(self,sql):
df = pandas.read_sql_query(sql,self.engine)
# df = pandas.read_sql(sql,self.engine) 这种读取方式也可以
# 返回dateframe格式
return df
if __name__ =='__main__':
# 查询的 sql 语句
SQL = '''select * from working_time order by id desc '''
# 调用 mysqlconn 类的 query() 方法
df_data = mysqlconn().query(sql=SQL)
2、to_sql 写入数据库
使用 to_sql 方法写入数据库之前,先把数据转化成 dateframe 。
import pandas
from sqlalchemy import create_engine
class mysqlconn:
def __init__(self):
mysql_username = 'root'
mysql_password = '123456'
# 填写真实数库ip
mysql_ip = 'mysql.mall.svc.test.local'
port = 3306
db = 'work'
# 初始化数据库连接,使用pymysql库
self.engine = create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format(mysql_username, mysql_password, mysql_ip, port,db))
# 查询mysql数据库
def query(self,sql):
df = pandas.read_sql_query(sql,self.engine)
# df = pandas.read_sql(sql,self.engine)
# 返回dateframe格式
return df
# 写入mysql数据库
def to_sql(self,table,df):
# 第一个参数是表名
# if_exists:有三个值 fail、replace、append
# 1.fail:如果表存在,啥也不做
# 2.replace:如果表存在,删了表,再建立一个新表,把数据插入
# 3.append:如果表存在,把数据插入,如果表不存在创建一个表!!
# index 是否储存index列
df.to_sql(table, con=self.engine, if_exists='append', index=False)
if __name__ =='__main__':
# 创建 dateframe 对象
df = pandas.DataFrame([{'name':'小米','price':'3999','colour':'白色'},{'name':'华为','price':'4999','colour':'黑色'}])
# 调用 mysqlconn 类的 to_sql() 方法
mysqlconn().to_sql('phonetest',df)
插入数据库的数据:
来源:https://www.cnblogs.com/shenh/p/14542409.html
0
投稿
猜你喜欢
- 几个特殊的函数(待补充)python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter、map、red
- 前言分享一个Vue前端导出Excel文件的方法。记录学习!功能需求:将表格的全部数据导出Excel格式的文件前端:Vue3+Element-
- 我们可以先建立一个包含文件名,文件标题的待检索文件的数据库,然后,用ADO方式来访问它,并建立记录集对象。具体代码和说明见下:
- 一个例子: print("Loading vgg19 weights...")vgg_mode
- 一、数据合并与分割1.tf.concat()填入两个tensor, 指定某维度,在指定的维度合并。除了合并的维度之外,其他的维度必须相等。2
- 为了区分选择与未选择区域,,将已选择区域的文本背景色设置为浅蓝色是个很做法。设置的路径在 Editor > Color Scheme
- 前言我们这里主要是利用requests模块和bs4模块进行简单的爬虫的讲解,让大家可以对爬虫有了初步的认识,我们通过爬几个简单网站,让大家循
- 一、Set 集合类型Set 集合类型 (交差并补) 特点 :无序 , 自动去重集合用{}表示,元素间用逗号分隔建立集合类型用{}或set()
- 因为需要检测一个一个链接中是否包含了IP地址,在这里需要使用到正则表达式 ,python完美的支持了正则表达式,在这里使用re模块来完成,对
- 1. lr_scheduler相关lr_scheduler = WarmupLinearSchedule(optimizer, warmup
- 本文实例讲述了Python实现查找数组中任意第k大的数字算法。分享给大家供大家参考,具体如下:模仿partion方法,当high=low小于
- 1. 使用os.system("cmd")特点是执行的时候程序会打出cmd在Linux上执行的信息。import oso
- 1. 插入数据前判断数据是否存在SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==
- 分组:根据研究目的,将所有样本点按照一个或多个属性划分为多个组,就是分组。pandas中,数据表就是DataFrame对象,分组就是grou
- 本文实例讲述了mysql设置指定ip远程访问连接的方法,分享给大家供大家参考。具体实现方法如下:1. 授权用户root使用密码jb51从任意
- 问题如图:想要删除产品表的主键约束,但是报错创建的产品表:CREATE TABLE PROVIDERS(PROVIDERID INT NOT
- 一、简介time模块提供各种操作时间的函数说明:一般有两种表示时间的方式:第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒
- 本文实例讲述了PHP排序二叉树基本功能实现方法。分享给大家供大家参考,具体如下:这里演示了排序二叉树节点的插入,中序遍历,极值的查找和特定值
- 1.问:在DW中如何设置页面边距为0?答:在DW中似乎没有直接设置的方法,你只有在Html文档中插入以
- 最近发现现有框架的通用查询存储过程的性能慢,于是仔细研究了下代码:Alter PROCEDURE [dbo].[AreaSelect]&nb