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

news2024/11/27 1:23:35

        我们的目标是:通过这一套资料学习下来,通过熟练掌握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.coloradmin.cn/o/2187279.html

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

相关文章

SLF4J(W): Class path contains multiple SLF4J providers.

问题背景 最近在给某AI项目集成阿里的通义千问SDK,发现竟然有个奇怪的报错,仔细一看发现,我类上用的lombok的Slf4j注释,阿里用的是org.slf4j.simple.SimpleServiceProvider,但是lombok用的是LogbackServiceProvider&a…

关于Vben Admin多标签页面缓存不生效的问题

情况说明 笔者在接手一个基于Vben Admin框架改造的vue3后台管理项目,客户要求在切换头部Tab页面时,不要刷新清空已经填写的表单页面或者表格。 然而,笔者根据Vben Admin的官方文档来配置多标签页面缓存后,页面每次切换后&#x…

Linux 应用层协议HTTP

文章目录 一、初始HTTP协议二、URL格式网络中怎么通过URL进行定位资源呢?编码和解码 三、HTTP的请求格式和响应格式HTTP的请求格式HTTP的响应格式HTTP的请求方法GET方法POST方法GET Vs PostHTTP的封装和分用文件流操作浏览器获得一个完整的网页流程 HTTP的状态码对3…

一、Linux下MySQL的安装与使用

文章目录 1. 基于docker安装mysql2. 字符集的相关操作2.1 修改MySQL5.7字符集2.2 各级别的字符集2.3 字符集与比较规则(了解)2.4 请求到响应过程中字符集的变化 3. SQL大小写规范3.1 Windows和Linux平台区别3.2 Linux下大小写规则设置3.3 SQL编写建议 4. sql_mode的合理设置4.1…

知识图谱入门——5:Neo4j Desktop安装和使用手册(小白向:Cypher 查询语言:逐步教程!Neo4j 优缺点分析)

Neo4j简介 Neo4j 是一个基于图结构的 NoSQL 数据库,专门用于存储、查询和管理图形数据。它的核心思想是使用节点、关系和属性来描述数据。图数据库非常适合那些需要处理复杂关系的数据集,如社交网络、推荐系统、知识图谱等领域。 与传统的关系型数据库…

端侧大模型系列 | 端侧AI Agent任务拆解大师如何助力AI手机?(简短版)

引言 简介 模型 实验 意义&前景: 总结 引言 今人不见古时月,今月曾经照古人。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖沙茶面的小女孩。 设想一下,你的智能手机不再只是"聪明"&#xff0…

12.梯度下降法的具体解析——举足轻重的模型优化算法

引言 梯度下降法(Gradient Descent)是一种广泛应用于机器学习领域的基本优化算法,它通过迭代地调整模型参数,最小化损失函数以求得到模型最优解。 通过阅读本篇博客,你可以: 1.知晓梯度下降法的具体流程 2.掌握不同梯度下降法…

力扣 中等 129.求根节点到叶子结点数字之和

文章目录 题目介绍解法 题目介绍 解法 法一:有返回值、 class Solution {public int sumNumbers(TreeNode root) {return dfs(root, 0);}public int dfs(TreeNode root, int x) {if (root null) {return 0;}x x * 10 root.val;if (root.left root.right) { //…

LC刷题专题:dfs、哈希表合集

自己刷题缺少分类思想,总是这里刷一道那里刷一道,以后建立几个专辑,然后自己新刷的同类型的题目都会即使更新上。 文章目录 690. 员工的重要性 690. 员工的重要性 2024-10-03 题目描述: 我第一次写并没有考虑到dfs,…

基于Arduino的L298N电机驱动模块使用

一.简介: L298N作为电机驱动芯片,具有驱动能力强,发热量低,抗干扰能力强的特点,一个模块可同时驱动两个直流电机工作,能够控制电机进行正转、反转、PWM调速。 说明: 1)12V输入端口接入供电电压…

esp32开发环境搭建和烧录测试

文章目录 前言一、硬件环境1、esp32开发板。2、两个micro usb 数据线,一路用于供电,另一路用于烧录和调试3、喇叭, 淘宝上买的 4 欧姆 3 W扬声器 二、软件环境配置1、开发软件2、ESP-IDF简介下载 3、vscode安装配置1、安装vscode2、安装IDF插…

论文提纲怎么写?分享5款AI论文写作软件

在学术研究和写作过程中,撰写高质量的论文是一项挑战性的任务。幸运的是,随着人工智能技术的发展,AI论文写作工具逐渐成为帮助学者和学生提高写作效率的重要工具。这些工具不仅能够提高写作效率,还能帮助简化复杂的写作流程&#…

C++(string类的实现)

1. 迭代器、返回capacity、返回size、判空、c_str、重载[]和clear的实现 string类的迭代器的功能就类似于一个指针,所以我们可以直接使用一个指针来实现迭代器,但如下图可见迭代器有两个,一个是指向的内容可以被修改,另一个则是指…

【JNI】hello world

JNI,作为java和C/C的中间层,为在Java中调用C/C代码提供了便利。作为初学者,这里简单记录学习的过程。 本文所有的操作都在kali linux上进行,jdk环境以及gcc,g编译器需自行提前安装好 操作系统: jdk&#…

行为型模式-命令-迭代-观察者-策略

命令模式 是什么 将一个请求封装成为一个对象, 从而可以使用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及可以撤销的操作 实例 请求封装成为对象 //用来声明执行操作的接口 public abstract class Command { protected Receiver receiver; public Comma…

【网络原理】Udp报文结构,保姆级详解,建议收藏

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 一、UDP报文格式 ​ ​ 可以看出UDP报文主要由报头和正文两部分构成,报头存储了此次报文的一些重要信息,而正文才是真正需要传输的内容。本篇文章就主要…

【Kubernetes】常见面试题汇总(五十二)

目录 116. K8S 集群服务暴露失败? 117.外网无法访问 K8S 集群提供的服务? 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目 69-…

Windows 环境上安装 NASM 和 YASM 教程

NASM 和 YASM NASM NASM(Netwide Assembler)是一个开源的、可移植的汇编器,它支持多种平台和操作系统。它可以用来编写16位、32位以及64位的代码,并且支持多种输出格式,包括ELF、COFF、OMF、a.out、Mach-O等。NASM使用…

复习HTML(进阶)

前言 上一篇的最后我介绍了在表单中&#xff0c;上传文件需要使用到 method属性 和enctype属性。本篇博客主要是详细的介绍这些知识 <form action"http://localhost:8080/test" method"post" enctype"multipart/form-data"> method属性…

SQL Inject-基于报错的信息获取

常用的用来报错的函数 updatexml() : 函数是MYSQL对XML文档数据进行查询和修改的XPATH函数。 extractvalue(): 函数也是MYSQL对XML文档数据进行查询的XPATH函数。 floor(): MYSQL中用来取整的函数。 思路&#xff1a; 在MySQL中使用一些指定的函数来制造报错&am…