如何使用python连接数据库?
数据分析离不开数据库,如何使用python连接数据库呢?听我娓娓道来哈
该笔记参考了PyMySQL官方文档和《python数据采集》关于数据存储的部分,欢迎大家去阅读原著,相信会理解的更加透彻。
补充:文末增加Oracle数据库的连接方式,大同小异。
背景:
我是在Anaconda notebook中进行连接实验的,环境Python3.6,当然也可以在Python Shell里面进行操作。
最常用也最稳定的用于连接MySQL数据库的python库是PyMySQL,所以本文讨论的是利用PyMySQL连接MySQL数据库,以及如何存储数据。
下面开始:
1、安装PyMySQL库
最简单的方式:在命令行输入 pip install pymysql
或者:下载whl文件进行安装,安装过程自行百度。
2、安装MySQL数据库
MySQL数据库类型有两种:MySQL和MariaDB,我用的是后者MariaDB。
两者在绝大部分性能上是兼容的,使用起来感觉不到啥区别。
给出下载地址:MySQL,MariaDB,安装过程很简单,一路Next Step,不过要记好密码。
有个小插曲,MySQL和MariaDB相当于姐姐妹妹的关系,两者由同一个人(Widenius)创建的。MySQL被Oracle收购后,Widenius先生觉得不爽,于是搞了个MariaDB,可以完全替代MySQL。大牛就是任性。
3、SQL基本语法
下面要用SQL的表创建、查询、数据插入等功能,这里简要介绍一下SQL语言的基本语句。
查看数据库:SHOW DATABASES;
创建数据库:CREATE DATEBASE 数据库名称;
使用数据库:USE 数据库名称;
查看数据表:SHOW TABLES;
创建数据表:CREATE TABLE 表名称(列名1 (数据类型1),列名2 (数据类型2));
插入数据:INSERT INTO 表名称(列名1,列名2) VALUES(数据1,数据2);
查看数据:SELECT * FROM 表名称;
更新数据:UPDATE 表名称 SET 列名1=新数据1,列名2=新数据2 WHERE 某列=某数据;
4、连接数据库
安装好必要得文件和库后,接下来正式开始连接数据库吧,虽然神秘却不难哦!
#首先导入PyMySQL库
import pymysql
#连接数据库,创建连接对象connection
#连接对象作用是:连接数据库、发送数据库信息、处理回滚操作(查询中断时,数据库回到最初状态)、创建新的光标对象
connection = pymysql.connect(host = 'localhost' #host属性user = 'root' #用户名 password = '******' #此处填登录数据库的密码db = 'mysql' #数据库名)
执行这段代码就连接好了!
5.使用python代码操作MySQL数据库
首先来查看一下有哪些数据库:
#创建光标对象,一个连接可以有很多光标,一个光标跟踪一种数据状态。
#光标对象作用是:、创建、删除、写入、查询等等
cur = connection.cursor()
#查看有哪些数据库,通过cur.fetchall()获取查询所有结果
print(cur.fetchall())
打印出所有数据库:
(('information_schema',),
('law',),
('mysql',),
('performance_schema',),
('test',))
在test数据库里创建表:
#使用数据库test
cur.execute('USE test')
#在test数据库里创建表student,有name列和age列
cur.execute('CREATE TABLE student(name VARCHAR(20),age TINYINT(3))')
向数据表student中插入一条数据:
sql = 'INSERT INTO student (name,age) VALUES (%s,%s)'
cur.execute(sql,('XiaoMing',23))
查看数据表student内容:
cur.execute('SELECT * FROM student')
print(cur.fetchone())
打印输出为:('XiaoMing', 23)
Bingo!是我们刚刚插入的一条数据
最后,要记得关闭光标和连接:
#关闭连接对象,否则会导致连接泄漏,消耗数据库资源
connection.close()
#关闭光标
cur.close()
OK了,整个流程大致如此。当然这里都是很基础的操作,更多的使用方法需要在PyMySQL官方文档里去寻找。
补充:
Oracle数据库连接
1、下载安装外包cx_Oracle,方式:在命令行输入 pip install cx_Oracle
2、连接
conn = oracle.connect('username/password@host:port/sid')#分别填用户名/密码/数据库所在IP地址:port/sid
3、获取光标对象curser
cur = conn.cursor()
4、使用cursor进行各种操作
cur.execute(sql语句)
5、关闭cursur、conn
cursor.close()
conn.close()相关文章:
如何使用python连接数据库?
数据分析离不开数据库,如何使用python连接数据库呢?听我娓娓道来哈 该笔记参考了PyMySQL官方文档和《python数据采集》关于数据存储的部分,欢迎大家去阅读原著,相信会理解的更加透彻。 补充:文末增加Oracle数据库的连…...
停车位识别数据集 图片数量12416张YOLO,xml和txt标签都有; 2类类别:space-empty,space-occupied;
YOLO停车位识别 图片数量12416张,xml和txt标签都有; 2类类别:space-empty,space-occupied; 用于yolo,Python,目标检测,机器学习,人工智能,深度学习࿰…...
MySQL 创建子账号
1. 使用 root 账号登录 MySQL 使用 root 账号登录 MySQL,登录成功如图所示: 新建一个 MySQL 子账号,新建子账号命令如下: 命令 : CREATE USER testlocalhost IDENTIFIED BY 123456;若出现如下图所示,则表示新建 MySQL…...
代码随想录 106. 岛屿的周长
106. 岛屿的周长 #include<bits/stdc.h> using namespace std;int main(){int n, m;cin >> n >> m;vector<vector<int>> mp(n, vector<int>(m, 0));for (int i 0; i < n; i){for (int j 0; j < m; j){cin >> mp[i][j];}}in…...
阿里云融合认证中的App端一键登录能力
在如今的移动互联网环境中,App端的一键登录功能逐渐成为提升用户体验的关键。用户不再需要繁琐的注册流程或输入短信验证码,一键即可通过手机号码完成登录。而阿里云融合认证中,一键登录能力为移动应用提供了一个简单、便捷且安全的用户身份验…...
基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...
vue-插槽作用域实用场景
vue-插槽作用域实用场景 1.插槽1.1 自定义列表渲染1.2 数据表格组件1.3 树形组件1.4 表单验证组件1.5 无限滚动组件 1.插槽 插槽感觉知道有这个东西,但是挺少用过的,每次看到基本都会再去看一遍用法和概念。但是在项目里,自己还是没有用到过…...
Prometheus+Grafana 监控 K8S Ingress-Ningx Controller
文章目录 一、prometheus中添加ingress-nginx的服务发现配置二、ingress-nginx controller的service添加端口暴露监控指标三、grafana添加ingress-nginx controller的监控模版 ingress-nginx默认是没有开启监控指标的,需要我们在ingress-nginx controller的svc里面开…...
如何在Visual Studio 2019中创建.Net Core WPF工程
如何在Visual Studio 2019中创建.Net Core WPF工程 打开Visual Studio 2019,选择Create a new project 选择WPF App(.Net Core) 输入项目名称和位置,单击Create 这样我们就创建好了一个WPF工程 工程文件说明 Dependencies 当前项目所使用的依赖库&…...
自然语言处理(NLP)论文数量的十年趋势:2014-2024
引言 近年来,自然语言处理(NLP)已成为人工智能(AI)和数据科学领域中的关键技术之一。随着数据规模的不断扩大和计算能力的提升,NLP技术从学术研究走向了广泛的实际应用。通过观察过去十年(2014…...
.net core API中使用LiteDB
LiteDB介绍 LiteDB 是一个小巧、快速和轻量级的 .NET NoSQL 嵌入式数据库。 无服务器的 NoSQL 文档存储简单的 API,类似于 MongoDB100% 的 C# 代码支持 .NET 4.5 / NETStandard 1.3/2.0,以单个 DLL(不到 450KB)形式提供线程安全…...
YOLO_V8分割
YOLO_V8分割 YOLO安装 pip install ultralytics YOLO的数据集转化看csdn 数据标注EIseg EIseg这块,正常安装就好,但是numpy和各类包都容易有冲突,python版本装第一点 数据标注过程中,记得把JSON和COCO都点上,把自…...
根据请求错误的状态码判断代理配置问题
SafeLine,中文名 “雷池”,是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命…...
Python 网络爬虫高阶用法
网络爬虫成为了自动化数据抓取的核心工具。Python 拥有强大的第三方库支持,在网络爬虫领域的应用尤为广泛。本文将深入探讨 Python 网络爬虫的高阶用法,包括处理反爬虫机制、动态网页抓取、分布式爬虫以及并发和异步爬虫等技术。以下内容结合最新技术发展…...
芯片Tapeout前GDS Review | Calibre中如何切出gds中指定区域版图?
在SoC芯片实现阶段我们会用到很多模拟IP,IO。对于这类模拟IP相关的电源连接,ESD保护电路连接,信号线连接都需要跟IP Vendor进行Review。但芯片整体版图涉及商业机密,我们不希望整个芯片的版图被各大vendor看到,因此我们…...
43 | 单例模式(下):如何设计实现一个集群环境下的分布式单例模式?
上两篇文章中,我们针对单例模式,讲解了单例的应用场景、几种常见的代码实现和存在的问题,并粗略给出了替换单例模式的方法,比如工厂模式、IOC 容器。今天,我们再进一步扩展延伸一下,一块讨论一下下面这几个…...
PHP如何解决异常处理
在PHP中,异常处理是通过使用try、catch、throw以及finally这几个关键字来实现的。以下是一个简单的介绍和示例: 异常处理的基本步骤 抛出异常: 使用throw关键字抛出一个异常对象。异常对象通常是Exception类或其子类的实例。 捕获异常&…...
C++ socket编程(3)
前面文章,介绍了一个简单socket通讯Demo, 客户端和服务器进行简单的交互。两个代码都很简单,如果情况一复杂,就会出错。这节我们把代码完善一下,实现一个客户端输入,发送,服务器echo的交互。本文…...
Collection-LinkedList源码解析
文章目录 概述LinkedList实现底层数据结构构造函数getFirst(), getLast()removeFirst(), removeLast(), remove(e), remove(index)add()addAll()clear()Positional Access 方法查找操作 概述 LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序…...
vue判断对象数组里是否有重复数据
TOCvue判断对象数组里是否有重复数据 try {//通过产品编码赛选出新的数组 在比较let names this.goodsJson.map(item > item["productCode"]);let nameSet new Set(names)if (nameSet.size ! names.length) {this.$message({message: 警告!产品选项…...
提升openclaw开发效率:用快马一键生成算法调试与可视化工具
最近在优化openclaw机械爪控制算法时,发现调试过程特别耗时。每次修改参数后,都要重新编译代码、运行测试,还要手动记录数据。为了提升效率,我用InsCode(快马)平台快速搭建了一个可视化调试工具,效果出乎意料的好。分享…...
别再买错卡了!手把手教你用Arduino Uno和MFRC522模块DIY智能门禁(附完整代码和避坑指南)
从零搭建Arduino RFID门禁:硬件选购、代码优化与避坑全指南 第一次接触Arduino和RFID技术时,我被琳琅满目的硬件选择和复杂的代码搞得晕头转向。特别是当兴冲冲买回一堆组件后,发现卡片根本无法被识别——原来是因为忽略了频率匹配这个关键细…...
RAPTOR编程实战:从算法设计到图形化交互
1. RAPTOR入门:为什么它是最适合初学者的算法工具 第一次接触编程的人往往会被各种语法规则和复杂环境劝退。我教过不少零基础学生,发现他们最头疼的不是算法逻辑本身,而是记不住C的分号或者Python的缩进规则。这时候RAPTOR的优势就显现出来…...
阿里小云KWS模型多语言支持实战:中英文混合唤醒
阿里小云KWS模型多语言支持实战:中英文混合唤醒 1. 引言 语音唤醒技术正在变得越来越智能,但有一个问题一直困扰着开发者:怎么让设备既能听懂中文,又能响应英文?想象一下,你对着智能音箱说"小云小云…...
如何通过LeaguePrank实现游戏界面个性化:打造独特的英雄联盟视觉体验
如何通过LeaguePrank实现游戏界面个性化:打造独特的英雄联盟视觉体验 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank LeaguePrank是一款专注于英雄联盟客户端界面自定义的开源工具,它通过安全的官方LCU…...
Joy-Con Toolkit:任天堂手柄全能管理解决方案
Joy-Con Toolkit:任天堂手柄全能管理解决方案 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit 核心价值:重新定义手柄控制体验 Joy-Con Toolkit作为开源手柄管理领域的创新工具࿰…...
敲敲云零代码平台一键部署实战:命令安装 vs Docker 安装
敲敲云提供两种一键部署方式,一条命令即可完成私有化部署,全程约 3 分钟。本文记录实际操作过程 部署前准备 服务器配置建议: 4 核 8GB 内存,50GB SSD 系统盘。支持系统:TencentOS、Alibaba Cloud Linux、CentOS Stre…...
手柄不兼容PC游戏?试试ViGEmBus的虚拟控制器仿真技术
手柄不兼容PC游戏?试试ViGEmBus的虚拟控制器仿真技术 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否遇到过这样的情况:新买的…...
实战指南:基于同一份OpenSpec,用快马平台同步生成前后端代码,确保联调无忧
最近在开发一个电商平台时,我们团队遇到了前后端联调效率低下的问题。由于接口文档和实际代码存在差异,经常出现前端调用参数和后端接收不一致的情况。后来我们发现,基于OpenSpec规范同步生成前后端代码可以完美解决这个问题,这里…...
公司SEO推广有哪些常见的误区需要避免
公司SEO推广有哪些常见的误区需要避免 在数字化营销的时代,公司SEO推广已经成为提升网站流量和品牌知名度的重要手段。在实际操作中,许多企业在SEO推广过程中常常犯下一些常见的误区,这些误区不仅影响了SEO的效果,还可能导致资源…...
