Python 从入门到实战33(使用MySQL)

        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

        上篇文章我们讨论了数据库编程接口操作的相关知识。今天我们将学习一下数据库MySQL使用的相关知识。

         在使用MySQL之前,我们需要支持python 的MySQL 驱动来连接到MySQL服务器。我们可以使用PyMySQL。安装起来比较简单,在“命令提示符”窗口输入如下命令:

pip install PyMySQL

以上图所示,安装PyMySQL成功。

1、连接数据库

上一节我们创建了数据库root,现在我们使用PyMySQL来连接数据库。

操作步骤如下:

连接数据库>创建一个游标对象>使用execute()方法执行SQL>使用fetchone()方法获取单条数据

import pymysql

#打开数据库进行连接,host,user,password,database参数指明
db = pymysql.connect(host="localhost",user="root",password="root",database='mysql')

#使用cursor()方法创建一个游标对象
cursor = db.cursor()

#使用execute()方法执行SQL查询
cursor.execute("SELECT VERSION()")

#使用fetchone()方法获取单条数据
data = cursor.fetchone()
print("Database version: %s "%data)

查看输出:

Database version: 8.0.39

2、创建数据表                    

数据库连接成功后,我们就可以为数据库创建数据表了,下面举例说明。

如创建scores 表,如下代码:

#打开数据库进行连接,host,user,password,database参数指明
db = pymysql.connect(host="localhost",user="root",password="root",database='mysql')

#使用cursor()方法创建一个游标对象
cursor = db.cursor()

#execute()方法执行SQL查询,如果scores 存在,则删除表
cursor.execute("DROP TABLE IF EXISTS scores")

#使用预处理语句创建表
sql = """
CREATE TABLE scores(
    id int(8) NOT NULL AUTO_INCREMENT,
    name varchar(50) NOT NULL,
    English int(8) NOT NULL,
    Math int(8) NOT NULL,
    Chinese int(8) NOT NULL,
    PRIMARY KEY(id)
)ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
"""
#
执行SQL语句
cursor.execute(sql)

#关闭数据库
db.close()

以上代码执行后可以看到数据库下面有产生对应的表scores

3、操作MySQL数据表

MySQL 数据表的操作主要是数据的新增、删除、修改和查找。

这里举例说明新增一些记录,如批量添加多条记录。

executemany()方法的语法格式:

executemany(operation,seq_of_params)

参数说明:  operation:操作的SQL语句

seq_of_params:参数序列

举例说明:

如我们像上面说的scores添加几位学生的分数。

import pymysql

#打开数据库进行连接,host,user,password,database参数指明
db = mymysql.connect(host="localhost",user="root",password="root",database='mysql',charset='utf8')

#使用cursor()方法创建一个游标对象
cursor = db.cursor()

#数据列表
data = [("xiaoming",100,66,88),
    ("xiaohua",90,76,89),
    ("xiaomi",70,86,80),
]

try:
    #执行插入动作
    cursor.executemany(
        "insert into scores(name,English,Math,Chinese) values(%s,%s,%s,%s)",data)
    #提交数据
    db.commit()
except:
    #发生错误时回滚
    db.rollback()

#关闭数据库
db.close()

查看数据库数据:有正常插入3条数据,

4、查询数据表

查询数据库和新增数据类似,只是SQL语句不同,以及后续处理展示一下查询到的数据,下面举例说明:

import pymysql
#打开数据库进行连接,host,user,password,database参数指明
db = pymysql.connect(host="localhost",user="root",password="root",database='mysql',charset='utf8')

#使用cursor()方法创建一个游标对象
cursor = db.cursor()

#执行查询数据
cursor.execute("SELECT * FROM scores")
# 获取查询结果 此时获取全部数据
rows = cursor.fetchall()

# 获取查询结果 此时获取第一条数据
# rows = cursor.fetchone()

# 获取查询结果 此时获取多条数据
# rows = cursor.fetchmany(2)

# 打印结果
print(rows)

# 关闭游标和数据库连接
cursor.close()
db.close()

输出结果参考:

查询到了,对应的数据信息由元组表示:

((8, 'xiaohua', 90, 76, 89), (7, 'xiaoming', 100, 66, 88), (9, 'xiaomi', 70, 86, 80), (10, 'xiaoming', 100, 66, 88), (11, 'xiaohua', 90, 76, 89), (12, 'xiaomi', 70, 86, 80))

今天先写学习到这里了,每天进步一点点。明天也要加油啊!明天我们继续学习python。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

音视频入门

一个视频,一秒内普遍大于等于25帧。 入门知识: 1.帧,一张画面就是一帧。一个视频就是由许许多多帧组成的。 帧率,单位时间内帧的数量。单位:帧/秒 或 fps。 分类:I帧,P帧,B帧 I…

IP协议报文

一.IP协议报头结构 二.IP协议报头拆解 1.4位版本 实际上只有两个取值,分别是4和6,4代表的是IPv4,6代表的是IPv6。 2.4位首部长度 IP协议报头的长度也是边长的,单位是*4,这里表示的大小为0~15,当数值为1…

【PyTorch】生成对抗网络

生成对抗网络是什么 概念 Generative Adversarial Nets,简称GAN GAN:生成对抗网络 —— 一种可以生成特定分布数据的模型 《Generative Adversarial Nets》 Ian J Goodfellow-2014 GAN网络结构 Recent Progress on Generative Adversarial Networks …

爬虫——同步与异步加载

一、同步加载 同步模式--阻塞模式(就是会阻止你浏览器的一个后续加载)停止了后续的解析 因此停止了后续的文件加载(图像) 比如hifini音乐网站 二、异步加载 异步加载--xhr(重点) 比如腾讯新闻,腾讯招聘等 三、同…

系统规划与管理——1信息系统综合知识(3)

文章目录 1.3 信息系统1.3.1 信息系统定义1.3.2 信息系统的生命周期1.3.3 信息系统常用的开发方法 1.3 信息系统 1.3.1 信息系统定义 信息系统是一种以处理信息为目的的专门的系统类型。信息系统可以是手工的,也可以是计算机化的。计算机化的信息系统的组成部件包…

【D3.js in Action 3 精译_025】3.4 让 D3 数据适应屏幕(中)—— 线性比例尺的用法

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…

HTML:相关概念以及标签

目录 什么是网页? 什么是HTML语言? 语法规范 HTML基本结构标签 DOCTYPE,lang以及字符集 HTML常用标签 5>图像标签(重要) 除此之外还有几个调整图片属性的标签 图像标签总结 什么是网页? 我们平时使用电脑和手机都是离不开网站和网页的,那么什么是网页呢?什么又是网…

cocotb报错收集

1、原因是定义测试类的时候,idle_inserter的名字不一样 函数修正后 函数修正前

电脑显示mfc140u.dll丢失怎么办,分享4个有效的解决方法

1. mfc140u.dll 简介 1.1 定义与作用 mfc140u.dll 是 Microsoft Foundation Class (MFC) 库中的一个动态链接库文件,它是 MFC 库在 Unicode 版本中的一个特定实现。MFC 是微软为 Windows 平台开发的一套 C 类库,封装了众多 Windows API 函数&#xff0…

定时器定时中断定时器外部中断

基础背景:TIM定时中断-CSDN博客 TIM的函数 // 恢复缺省设置 void TIM_DeInit(TIM_TypeDef* TIMx); // 时基单元初始化,第一个参数TIMx选择某个定时器,第二个参数是结构体,包含了配置时基单元的一些参数。 void TIM_TimeBaseInit…

了解华为计算产品线,昇腾的业务都有哪些?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 随着 ChatGPT 的现象级爆红,它引领了 AI 大模型时代的深刻变革,进而造成 AI 算力资源日益紧缺。与此同时,中美贸易战的持续也使得 AI 算力国产化适配成为必然趋势。 …

golang grpc初体验

grpc 是一个高性能、开源和通用的 RPC 框架,面向服务端和移动端,基于 HTTP/2 设计。目前支持c、java和go,分别是grpc、grpc-java、grpc-go,目前c版本支持c、c、node.js、ruby、python、objective-c、php和c#。grpc官网 grpc-go P…

Visual Studio 字体与主题推荐

个人推荐,仅供参考: 主题:One Monokai VS Theme 链接:One Monokai VS Theme - Visual Studio Marketplacehttps://marketplace.visualstudio.com/items?itemNameazemoh.onemonokai 效果: 字体:JetBrain…

[RabbitMQ] Spring Boot整合RabbitMQ

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

Scrapy 爬虫的大模型支持

使用 Scrapy 时,你可以轻松使用大型语言模型 (LLM) 来自动化或增强你的 Web 解析。 有多种使用 LLM 来帮助进行 Web 抓取的方法。在本指南中,我们将在每个页面上调用一个 LLM,从中抽取我们定义的一组属性,而无需编写任何选择器或…

C++和OpenGL实现3D游戏编程【连载13】——多重纹理混合详解

🔥C++和OpenGL实现3D游戏编程【目录】 1、本节要实现的内容 前面说过纹理贴图能够大幅提升游戏画面质量,但纹理贴图是没有叠加的。在一些游戏场景中,要求将非常不同的多个纹理(如泥泞的褐色地面、绿草植密布的地面、碎石遍布的地面)叠加(混合)起来显示,实现纹理间能够…

多区域OSPF路由协议

前言 之前也有过关于OSPF路由协议的博客,但都不是很满意,不是很完整。现在也是听老师讲解完OSPF路由协议,感触良多,所以这里重新整理一遍。这次应该是会满意的 一些相关概念 链路状态 链路指路由器上的一个接口,链路状…

【社保通-注册安全分析报告-滑动验证加载不正常导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

新手教学系列——爬虫异步并发注意事项

引言 爬虫是网络数据采集中不可或缺的工具,很多程序员在入门时会遇到这样的问题:为什么我的爬虫这么慢?尤其在面对大量数据时,单线程爬虫的速度可能让人捶胸顿足。随着爬虫规模的增大,异步并发成为了提高爬取效率的关键。然而,异步并发并不像表面看起来那么简单,如果没…