【最全】Python连接数据库取数与写入数据

news2024/11/17 6:24:18

不管是做数据分析还是风控建模,都避免不了从数据库中取数,和把数据写入数据库。本文整理连接数据库的不同方法,以及单条写入数据和批量写入数据。所有代码都实测可用,并实际应用于生产,分享给更多在这方面遇到困难的朋友。取数后的分析结果若想定时发送给相关人员,可参考【干货】用Python每天定时发送监控邮件。

文章目录

    • 一、连接数据库方法一(pymysql)
    • 二、连接数据库方法二(create_engine)
    • 三、把数据导入到数据库
    • 四、一行一行追加写入少量数据
    • 五、批量追加写入数据

  

一、连接数据库方法一(pymysql)

  
首先介绍连接数据库的方法一,具体代码如下:

import pymysql
import numpy as np 
import pandas as pd

#36数据库
conn = pymysql.connect(host='ip', user='用户名', passwd='密码', db='数据库名')
#建立连接,host中填mysql服务器所在的主机的ip,user中填为用户名,passwd中填密码,db中填数据库名
sql = ''' select * from  credit_approve_result limit 3'''
date = pd.read_sql_query(sql, conn)

主要思路是先导入库,再填入ip、用户名、密码、数据库名等信息建立连接。然后定义sql查询语句,进行数据查询。如果对pymysql函数有疑问,可以到”阿黎逸阳的代码“公众号中参考历史文章:实现Python连接数据库取数需求
  
  

二、连接数据库方法二(create_engine)

  
接着介绍连接数据库的方法二,具体代码如下:

import pandas as pd 
from sqlalchemy import create_engine

conn = create_engine('mysql+pymysql://user:passwd@ip:3306/db',encoding='utf8')
#建立连接,user替换为用户名,passwd替换为密码,ip替换为mysql服务器所在的主机的ip,db中填数据库名
sql = ''' select * from  credit_approve_result limit 3'''
date = pd.read_sql_query(sql, conn)

主要思路是先导入库,再填入用户名、密码、数据库名等信息建立连接,其中3306是默认端口。然后定义sql查询语句,进行数据查询。可以发现这两种连接方式很像,只是用到的库不一样,填信息的形式不一样,大体步骤是一样的。

  
  

三、把数据导入到数据库

  
刚刚我们已经从数据库中读取数据了,我们试下把sql取数的结果导入到新表中。具体代码如下:

conn = create_engine('mysql+pymysql://user:passwd@ip:3306/test',encoding='utf8')
#建立连接,user替换为用户名,passwd替换为密码,ip替换为mysql服务器所在的主机的ip
date.to_sql("jlkj_cs", conn, if_exists='replace', index=False)

以上代码是把date数据导入到test库的jlkj_cs表中,如果之前存在这张表,用date的数据替换这张表。

  
  

四、一行一行追加写入少量数据

  

为了让大家更清晰地看到取数,写入数据,追加写入数据的逻辑。这一节把前面几小节的内容进行了汇总,并增加了一行一行追加写入少量数据的代码。具体如下:

import pandas as pd
import pymysql.cursors
from sqlalchemy import create_engine

#读取数据
conn = create_engine('mysql+pymysql://user:passwd@ip:3306/temp_data_2',encoding='utf8')
jxb_sx_head3 = pd.read_sql('''select session_id, customerName from xb_policy_sxall limit 3''',conn)

#写入数据
conn = create_engine('mysql+pymysql://user:passwd@ip:3306/test',encoding='utf8')
jxb_sx_head3.to_sql("jlkj_cs", conn, if_exists='replace', index=False)

#单条插入数据
conn = pymysql.connect(host='ip',user = "用户名", passwd = "密码", db = "test")
cursor = conn.cursor()
cursor.executemany(
"insert into jlkj_cs values(%s, %s)",
[
('OT111', '张一'),
('OT112', '张二')
]
)
conn.commit()

#检查是否插入成功
conn = pymysql.connect(host='ip',user = "用户名", passwd = "密码", db = "test")
cs_add_date = pd.read_sql('''select * from jlkj_cs''',conn)
cs_add_date

得到结果:

图片

  
  

五、批量追加写入数据

  
在第四小节中已经介绍了一条一条写入数据的方法,本小节介绍把数据框直接追加写入到数据库表中的方法。具体代码如下:

conn = create_engine('mysql+pymysql://user:passwd@ip:3306/test',encoding='utf8')
date_pl.to_sql(name='jlkj_cs', con=conn, if_exists='append', index=False, index_label=False)
cs_add_date2 = pd.read_sql('''select * from jlkj_cs''',conn)
cs_add_date2

得到结果:

、

其中date_pl中的数据需要和写入表的数据一致。至此,Python连接数据库取数与写入数据已讲解完毕,需要的朋友可以自己跟着代码尝试一遍图片。

限时免费进群】群内提供学习Python、玩转Python、风控建模、人工智能、数据分析相关招聘内推信息、优秀文章、学习视频,也可交流学习工作中遇到的相关问题。需要的朋友添加微信号19967879837,加时备注想进的群,比如风控建模。
  
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/899558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零基础自学:2023 年的今天,请谨慎进入网络安全行业

前言 2023 年的今天,慎重进入网安行业吧,目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多,还有很多高中被挖过来的大佬。 理由很简单,目前来说,信息安全的圈子人少,985、211 院校很多都才…

AI 绘画Stable Diffusion 研究(十二)SD数字人制作工具SadTlaker插件安装教程

免责声明: 本案例所用安装包免费提供,无任何盈利目的。 大家好,我是风雨无阻。 想必大家经常看到,无论是在产品营销还是品牌推广时,很多人经常以数字人的方式来为自己创造财富。而市面上的数字人收费都比较昂贵,少则几…

​网安板块是真风口还是炒作?

看需求,官方明确要求政企等在网安上投入的比重不低于10%,而当前,信息安占IT的投入比重不到3%!即使是政府对网安和IT合规的要求高,占比高达23.7%,但是全国平均下来也不过5%,距离10%的投入要求&am…

中断之MSI和MSI-X的区别详细总结附图文快速掌握

目录 一、整体介绍二、MSI和MSI-X对比2.1 中断向量连续2.2 映射区域区别2.3 MSI-X配置空间2.3.1 MSI-X Capbility介绍2.3.2 Capbility ID介绍2.3.3 Message Control介绍2.3.4 MSI-X Table介绍2.3.5 MSI-X Pending Table(PBA)介绍 三、MSI 处理过程3.1 Me…

wsl,字体乱码问题

配置wsl,字体乱码问题 一、前言 用zsh配置好wsl,每次打开还是会出现乱码,只有再新打开一个终端才会显示字体 如下图:第一次打开,出现乱码 如图:按加号,再开一个新终端才会显示字体。 二、解…

IDEA:Error running,Command line is too long. 解决方法

报错如下: Error running SendSmsUtil. Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun.原因是启动命令过长。 解决方法: 1、打开Edit Configurations 2、点击Modify options设置&#x…

React(6)

1.React插槽 import React, { Component } from react import Child from ./compoent/Childexport default class App extends Component {render() {return (<div><Child><div>App下的div</div></Child></div>)} }import React, { Compon…

remove、remove_if、remove_copy、remove_copy_if

remove(b,e,v) //[b,e) 删value remove_if(b,e,p) //[b,e) 删p条件 remove_copy(b,e,r,v) //[b,e) 删v&#xff0c;结果存入r remove_copy_if(b,e,r,p) //[b,e) 删p条件&#xff0c;结果存入r remove和remove_if结果相同&#xff0c;只是传入的条件不一样。示例图如下&#xf…

如何用输入函数为数组赋值

在编写程序时我们经常使用数组&#xff0c;而数组的大小可能是很大的但是我们并不需要为每个元素都自己赋值&#xff0c;我们可能会自定义输入数组元素个数&#xff0c;我们应该如何实现通过输入函数为数组赋值呢&#xff1f; 目录 第一种&#xff1a; 第二种&#xff1a; 第一…

信号量与管程

前言 我们知道&#xff0c;在并发领域内&#xff0c;需要关注分工、同步与互斥&#xff0c;针对分工问题&#xff0c;就是将任务拆解&#xff0c;分配给多个线程执行&#xff0c;而在多线程执行的过程中&#xff0c;需要解决线程之间的协作与互斥问题进而保证并发安全。那么解…

day-25 代码随想录算法训练营(19)回溯part02

216.组合总和||| 思路&#xff1a;和上题一样&#xff0c;差别在于多了总和&#xff0c;但是数字局限在1-9 17.电话号码的字母组合 思路&#xff1a;先纵向遍历第i位电话号码对于的字符串&#xff0c;再横向递归遍历下一位电话号码 93.复原IP地址 画图分析&#xff1a; 思…

OpenLayers实战,OpenLayers实现地图鼠标经过点要素时显示名称标注提示框,移出后隐藏

专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解OpenLayers实现地图鼠标经过点要素时显示名称标注提示框,移出后隐藏的功能。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用:…

【Java基础】深入理解String、StringBuffer和StringBuilder的异同

文章目录 一、结论&#xff1a;二、可变性String&#xff08;不可变&#xff09;StringBuffer和StringBuilder&#xff08;可变&#xff09; 三、线程安全性String&#xff08;线程安全&#xff09;StringBuffer&#xff08;线程安全&#xff09;和StringBuilder&#xff08;线…

58.C++ STL标准模板库 STL概述 STL三大组件

一、初识STL 1.1 STL概述 长久以来&#xff0c;软件界⼀直希望建⽴⼀种可重复利⽤的东⻄&#xff0c;以及⼀种得以制造出”可重复运⽤的东⻄”的⽅法,让程序员的⼼⾎不⽌于随时间的迁移&#xff0c;⼈事异动⽽烟消云散&#xff0c;从函(functions)&#xff0c;类别(classes),函…

nginx 配置反向代理的逻辑原则案例(值得一看)

一 实操步骤 1.1 架构图 1.2 配置原则 匹配准则&#xff1a; 当proxy_pass代理地址端口后有目录(包括 / 和/xxx),相当于是绝对根路径&#xff0c;则 nginx 不会把 location 中匹配的路径部分代理走; 当proxy_pass代理地址端口后无任何内容&#xff0c;可以理解为相对路径…

matlab使用教程(19)—曲线拟合与一元方程求根

1.多项式曲线拟合 此示例说明如何使用 polyfit 函数将多项式曲线与一组数据点拟合。您可以按照以下语法&#xff0c;使用 polyfit 求出以最小二乘方式与一组数据拟合的多项式的系数 p polyfit(x,y,n), 其中&#xff1a; • x 和 y 是包含数据点的 x 和 y 坐标的向量 …

DP读书:鲲鹏处理器 架构与编程(七)ARMv8-A 体系结构

一小时速通ARMv8-A体系结构 一、ARMv8-A处理单元核心架构1. ARMv8-A架构的处理器运行模式a. ARMv8-A的执行架构A. AArch64 执行状态B. AArch32 执行状态 b. ARMv8-A架构支持的指令集c. ARMv8-A 支持的数据类型d. ARMv8-A 的异常等级与安全模型e. ARMv8-A的虚拟化架构f. ARMv8-A…

Vue项目商品购物车前端本地缓存逻辑(适用H5/ipad/PC端)——前端实现购物车删除商品、购物车增减数量,清空购物车功能

一、需求 1、用户选择商品&#xff0c;自动回显在购物车列表中&#xff1b; 2、同个商品追加&#xff0c;购物车列表数量叠加&#xff1b; 3、开启赠送&#xff0c;选中的商品&#xff0c;在购物车中另增一条数据&#xff0c;且购物车列表价格显示为0&#xff1b;其实际价格在…

【OpenVINOSharp】在英特尔® 开发者套件爱克斯开发板使用OpenVinoSharp部署Yolov8模型

在英特尔 开发者套件爱克斯开发板使用OpenVinoSharp部署Yolov8模型 一、英特尔开发套件 AIxBoard 介绍1. 产品定位2. 产品参数3. AI推理单元 二、配置 .NET 环境1. 添加 Microsoft 包存储库2. 安装 SDK3. 测试安装4. 测试控制台项目 三、安装 OpenVINO Runtime1. 下载 OpenVINO…

【无闪烁AI视频制作】

效果查看&#xff1a; https://tianfeng.space/wp-content/uploads/2023/08/8月16日-12.mp4 前言 现在其实有很多的AI视频了&#xff0c;效果也越来越逼真&#xff0c;来看看都是怎么制作的吧&#xff01; 安装 TemporalKit下载 https://github.com/CiaraStrawberry/Tempo…