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。

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

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

相关文章

ASP.NET Zero 多租户介绍

ASP.NET Zero 是一个基于 ASP.NET Core 的应用程序框架,它提供了多租户支持,以下是关于 ASP.NET Zero 多租户的介绍: 一、多租户概念 多租户是一种软件架构模式,允许多个客户(租户)共享同一套软件应用程序…

探索TOGAF理论的实践应用:企业数字化转型的深度指南

数字化转型的迫切性与路径选择 随着全球化进程和技术革命的加速,企业正面临前所未有的挑战和机遇。数字化转型已成为企业保持竞争力、创新业务模式、优化客户体验的核心手段。然而,企业在实施数字化转型时,往往面临路径不清、技术与业务脱节…

《Linux从小白到高手》理论篇(七):Linux的时间管理运行级别启动过程原理详解

List item 本篇将介绍Linux的时间管理&运行级别相关知识,并将深入介绍Linux的启动过程及原理。 Linux的时间管理 Linux 时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称 RTC)时钟。系统时…

Linux驱动开发(速记版)--设备树插件

第六十八章 设备树插件介绍 Linux 4.4之后引入了动态设备树,其中的设备树插件(Device Tree Overlay)是一种扩展机制,允许在运行时动态添加、修改或删除设备节点和属性。 设备树插件机制通过DTS(设备树源文件&#xff0…

Qt C++设计模式->命令模式

命令模式(Command Pattern)是一种行为型设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求对客户端进行参数化,对请求排队或记录请求日志,并支持可撤销的操作。命令模式通过将请求的发送者与执…

protobuf 讲解

一、序列化概念回顾 二、什么是PB 将结构化数据进行序列化的一种方式 三、PB的特点 语言无关、平台无关:即PB支持Java,C、Python等多种语言。支持多个平台 高效:即比XML更小,更快,更为简单。 扩展性、兼容性好&am…

rabbitMq------客户端模块

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言消费者模块信道管理模块管理的字段提供的接口 信道内存管理连接管理类 前言 在RabbitMQ中,提供服务的是信道,因此在客⼾端的实现中&…

WPF之UI进阶--控件样式与样式模板及词典

WPF的优势之一就是能够更加容易快捷的对窗体和控件的外面进行改造,换句话说,那就是UI设计个性化更加容易。主要是借助了样式、模板及词典来实现的。那么本篇博文就一一对他们进行介绍。 文章目录 一、样式1: 定义样式2: 使用Setter设置属性关于Property和…

Python知识点:如何使用Edge Impulse与Python进行机器学习模型部署

开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 使用Edge Impulse与Python进行机器学习模型部署 在物联网和边缘计算领域&#x…

java线程池参数设置原则

线程池参数设置原则 1 如何为线程池设置合适的线程参数? 目前根据一些开源框架,设置多少个线程数量通常是根据应用的类型**:I/O 密集型、CPU 密集型。** I/O密集型 I/O密集型的场景在开发中比较常见,比如像 MySQL数据库读写、文…

C或C++判断指针是否指向同一块内存

有时需要判断指针是否指同一块内存,例如设计字符串时: (1)insert函数 (2) replace函数 (3)assign函数 难点是迭代器,判断是否同一个迭代器时,需要你在设计迭代器时加…

Kubernetes-环境篇-01-mac开发环境搭建

1、brew安装 参考知乎文章:https://zhuanlan.zhihu.com/p/111014448 苹果电脑 常规安装脚本(推荐 完全体 几分钟安装完成) /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"苹果电脑 极…

Rstudio:强大的R语言集成开发环境(IDE)

Rstudio 应该是 R 语言使用的标配,尽管 Rstudio 的母公司 Posit 推出了新一代的集成开发环境 Positron,但其还处于开发阶段。作为用户不妨让其成熟后再使用,现阶段还是 Rstudio 更稳定。 如果你在生物信息学或统计学领域工作,R语言…

Python | Leetcode Python题解之第455题分发饼干

题目&#xff1a; 题解&#xff1a; class Solution:def findContentChildren(self, g: List[int], s: List[int]) -> int:g.sort()s.sort()m, n len(g), len(s)i j count 0while i < m and j < n:while j < n and g[i] > s[j]:j 1if j < n:count 1i …

uni-app - - - - -vue3使用i18n配置国际化语言

uni-app - - - - -使用i18n配置国际化语言 1. 安装vue-i18n2. 配置文件2.1 创建如下文件2.2 文件配置2.3 main文件导入i18n 3. 页面内使用3.1 template内直接使用3.2 变量接收使用 1. 安装vue-i18n npm install vue-i18n --save2. 配置文件 2.1 创建如下文件 locales文件夹里…

水泵模块(5V STM32)

目录 一、介绍 二、传感器原理 1.尺寸介绍 2.继电器控制水泵电路原理图 三、程序设计 main.c文件 bump.h文件 bump.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 水泵模块(bump)通常是指用于液体输送系统的组件&#xff0c;它负责将水或其他流体从低处提…

PHP常用的超全局变量(8个)

在PHP中&#xff0c;超全局变量是一种特殊的变量类型&#xff0c;它们在全部作用域中始终可用&#xff0c;无需使用global关键字来访问。这些变量提供了在PHP脚本中访问和操作各种数据和环境信息的便捷方式。以下是PHP中常用的8个超全局变量的详细介绍&#xff1a; 1. $GLOBAL…

四.网络层(上)

目录 4.1网络层功能概述 4.2 SDN基本概念 4.3 路由算法与路由协议 4.3.1什么是路由协议&#xff1f; 4.3.2什么是路由算法&#xff1f; 4.3.3路由算法分类 (1)静态路由算法 (2)动态路由算法 ①全局性 OSPF协议与链路状态算法 ②分散性 RIP协议与距离向量算法 4.3.…

【C语言】内存函数的使用和模拟实现

文章目录 一、memcpy的使用和模拟实现二、memmove的使用和模拟实现三、memset的使用四、memcmp的使用 一、memcpy的使用和模拟实现 在之前我们学习了使用和模拟实现strncpy函数&#xff0c;它是一个字符串函数&#xff0c;用来按照给定的字节个数来拷贝字符串&#xff0c;那么问…

Javascript数组研究03_手写实现_fill_filter_find_findIndex_findLast_findLastIndex

6 Array.fill() 6.1 基本介绍 fill() 方法用一个固定值填充一个数组中从起始索引&#xff08;默认为 0&#xff09;到终止索引&#xff08;默认为 array.length&#xff09;内的全部元素。它返回修改后的数组。 fill(value) fill(value, start) fill(value, start, end)输入…