零基础学Python之整合MySQL

Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。

不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。

DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。

Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。

Python DB-API使用流程:

  • 引入 API 模块。
  • 获取与数据库的连接。
  • 执行SQL语句和存储过程。
  • 关闭数据库连接。

Python中操作MySQL数据库有多种方法,例如使用mysql-connector-python、PyMySQL、mysqlclient等库。本文将以PyMySQL为例,介绍如何在Python中使用PyMySQL库进行MySQL数据库操作。

在Python中使用PyMySQL库进行MySQL数据库操作,需要先安装PyMySQL库。可以使用pip命令在命令行中安装PyMySQL库。

pip install pymysql

1.连接MySQL数据库

使用 connect() 方法连接到MySQL数据库。需要提供主机名、用户名、密码和数据库名。

import pymysqlconnection = pymysql.connect(host="47.93.159.97",port=3306,user="root",password="mysql8test.",db="user",charset="utf8mb4")

2.SQL语句执行

使用 execute() 方法执行对应的SQL语句。

import pymysql# 获取到connection对象之后,编写sql调用execute()方法。
cursor = connection.cursor()
sql = "增删改查sql语句"
# 参数
date = ("元组类型",)
# 执行SQL
affect_row = cursor.execute(sql,date)

3.Python操作MySQL案例

了解完 connect()execute() 下面我们直接来一个案例演示下Python操作MySQL的增删改查。

需求:编写一个程序,操作数据库需要对人员进行增删改查。

(1)准备数据库表格user表

-- `user`.`user` definitionCREATE TABLE `user` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',`name` varchar(100) DEFAULT NULL COMMENT '姓名',`age` varchar(100) DEFAULT NULL COMMENT '年龄',`sex` varchar(100) DEFAULT NULL COMMENT '性别',`address` varchar(100) DEFAULT NULL COMMENT '地址',`career` varchar(100) DEFAULT NULL COMMENT '职业',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

(2)封装数据库的工具类

import pymysql'''
数据库操作工具类
'''class DBUtil:# 创建连接对象@staticmethoddef get_connection():connection = pymysql.connect(host="ip地址",port=3306,user="user",password="password",db="user",charset="utf8mb4")return connection# 关闭连接对象@staticmethoddef close(connection, cursor):# 更改提交connection.commit()# 关闭游标对象cursor.close()# 关闭连接对象connection.close()

(3)数据库增删改查方法编写

from DBUtil import DBUtilclass UserDao:@staticmethoddef __addUser__(name, age, sex, address, career):connection = DBUtil.get_connection()cursor = connection.cursor()sql = "insert into user (name,age,sex,address,career) values (%s,%s,%s,%s,%s)"data = [(name,age,sex,address,career)]affect_row = cursor.executemany(sql,data)print("受影响的行数:",affect_row)if affect_row > 0:print("添加成功")else:print("添加失败")DBUtil.close(connection,cursor)@staticmethoddef __updateUser__(user_id, name, age, sex, address, career):connection = DBUtil.get_connection()cursor = connection.cursor()sql = "update user set name = %s,age = %s,sex=%s,address=%s,career=%s where id = %s"date = (name,age,sex,address,career,user_id)affect_row = cursor.execute(sql,date)if affect_row > 0:print("修改成功")else:print("修改失败,当前人员不存在")DBUtil.close(connection,cursor)@staticmethoddef __deleteUser__(user_id):connection = DBUtil.get_connection()cursor = connection.cursor()sql = "delete from user where id =%s"affect_row = cursor.execute(sql, (user_id,))if affect_row > 0:print("删除成功")else:print("删除失败,当前人员不存在")DBUtil.close(connection, cursor)@staticmethoddef __selectUsers__():connection = DBUtil.get_connection()cursor = connection.cursor()sql = "select * from user"cursor.execute(sql)rows = cursor.fetchall()for row in rows:print("编号:",row[0],"姓名:",row[1],"年龄:",row[2],"性别:",row[3],"地址:",row[4],"职业:",row[5])DBUtil.close(connection,cursor)

(4)主程序入口编写

from UserDao import UserDaodef main():# 入口while True:print("[1]增加用户信息")print("[2]删除用户信息")print("[3]修改用户信息")print("[4]查询用户信息")print("[5]退出系统")choose = int(input("请输入你要执行的选项:"))if choose == 1:name = input("姓名:")age = input("年龄:")sex = input("性别:")address = input("地址:")career = input("职业:")UserDao.__addUser__(name, age, sex, address, career)elif choose == 2:user_id = input("用户ID:")UserDao.__deleteUser__(user_id)elif choose == 3:user_id = input("用户ID:")name = input("姓名:")age = input("年龄:")sex = input("性别:")address = input("地址:")career = input("职业:")UserDao.__updateUser__(user_id, name, age, sex, address, career)elif choose == 4:UserDao.__selectUsers__()else:print("退出系统")breakif __name__ == "__main__":main()

运行效果:

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

导数的几何意义【高数笔记】

1. 高数中的导数几何意义,与中学中斜率的联系 2. 导函数与导数的区别和联系又是什么 3. 导数的几何意义的题型是什么 4. 这些题型又有哪些区别 5. 点在曲线外和点在曲线上,需要注意什么 6. 法线和切线有什么关系 7. 法线是什么

EasyExcel分页上传数据

EasyExcel分页上传数据 一、实例 controller上传入口 PostMapping("/upload")ResponseBodyLog(title "导入工单", businessType BusinessType.IMPORT)public AjaxResult uploadFile(HttpServletRequest request, MultipartFile files) throws Exceptio…

java之Maven

1. maven Maven是管理和构建java项目的工具 项目依赖资源(jar包)的管理,避免版本冲突统一项目结构项目构建,标准跨平台(Linux,window,MacOS)的自动化项目管理 2.maven依赖仓库 2.maven安装 maven安装视频教程 3. IDEA集成Maven 4. maven的依赖范围 5. maven生命…

【element-ui】el-select下拉框el-date-picker弹出框定位问题解决方案

问题描述: 项目开发过程中发现el-select和el-date-picker弹出框显示时候,滚动屏幕,导致弹出框定位出现问题。 首先考虑到看一下element-ui官网提供的api,如下图 1、select提供了popper-append-to-body属性的配置 代码如下&#x…

C#,21根火柴棍问题(21 Matchticks Problem)的算法与源代码

一、21根火柴棍问题(21 Matchticks Problem) 21根火柴棍问题是西方经典游戏之一。 给定21根火柴,2个人A和B(比如:分别是计算机和用户)。 每个人一次可以挑选 1-- 4 根火柴。 被迫挑最后一根火柴的人输了…

【力扣 - 回文链表】

题目描述 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 提示&#xff1a; 链表中节点数目在范围[1, 100000] 内 0 < Node.val < 9 方法一&#xff1a;将值复制到数…

Uniapp真机调试:手机端访问电脑端的后端接口解决

Uniapp真机调试&#xff1a;手机端访问电脑端的后端接口解决 1、前置操作 HBuilderX -> 运行 -> 运行到手机或模拟器 -> 运行到Android App基座 少了什么根据提示点击下载即可 使用数据线连接手机和电脑 手机端&#xff1a;打开开发者模式 -> USB调试打开手机端&…

Unity类银河恶魔城学习记录7-1 P67 Sword Throw Skill State源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Sword_Skill.cs using System.Collections; using System.Collections.Gen…

Kubernetes基础(十五)-k8s网络通信

1 k8s网络类型 2 Pod网络 2.1 同一pod内不同容器通信 Pod是Kubernetes中最小的可部署单元&#xff0c;它是一个或多个紧密关联的容器的组合&#xff0c;这些容器共享同一个网络命名空间和存储卷&#xff0c;因此Pod中的所有容器都共享相同的网络命名空间和IP地址——PodIP&a…

git flow与分支管理

git flow与分支管理 一、git flow是什么二、分支管理1、主分支Master2、开发分支Develop3、临时性分支功能分支预发布分支修补bug分支 三、分支管理最佳实践1、分支名义规划2、环境与分支3、分支图 四、git flow缺点 一、git flow是什么 Git 作为一个源码管理系统&#xff0c;…

Vulnhub靶机:hackable3

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;hackable3&#xff08;10.0.2.53&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/hac…

基于springboot超市进销存系统源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;超市进销存系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;而超…

【代码】Processing笔触手写板笔刷代码合集

代码来源于openprocessing&#xff0c;考虑到国内不是很好访问&#xff0c;我把我找到的比较好的搬运过来&#xff01; 合集 参考&#xff1a;https://openprocessing.org/sketch/793375 https://github.com/SourceOf0-HTML/processing-p5.js/tree/master 这个可以体验6种笔触…

sheng的学习笔记-网络爬虫scrapy框架

基础知识&#xff1a; scrapy介绍 何为框架&#xff0c;就相当于一个封装了很多功能的结构体&#xff0c;它帮我们把主要的结构给搭建好了&#xff0c;我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据&#xff0c;提取数据的框架&#xff0c;我们熟知爬虫总…

TI毫米波雷达开发——High Accuracy Demo 串口数据接收及TLV协议解析 matlab 源码

TI毫米波雷达开发——串口数据接收及TLV协议解析 matlab 源码 前置基础源代码功能说明功能演示视频文件结构01.bin / 02.binParseData.mread_file_and_plot_object_location.mread_serial_port_and_plot_object_location.m函数解析configureSport(comportSnum)readUartCallback…

LMDeploy 大模型量化部署实践

在浦语的MDeploy大模型量化部署实践课程中&#xff0c;可能需要完成的任务包括&#xff1a; 大模型部署背景 2、LMDeploy简介 环境配置&#xff1a;这个部分你需要安装并设置相关的开发工具和库。这可能包括Python环境、LMDeploy库等等。你需要明确写出你使用的操作系统以及安装…

UML 2.5图形库

UML 2.5图形库 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址drawon.cn或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了云端存储&#…

Java编程练习之类的继承

1.创建银行卡类&#xff0c;并分别设计两个储蓄卡和信用卡子类。 import javax.swing.plaf.BorderUIResource;import java.util.Scanner;class Card {int Id; //银行卡&#xff1b;int password; //密码&#xff1b;double balance2000; //账户存款金额&#xff1b;String A…

【SpringBootStarter】自定义全局加解密组件

【SpringBootStarter】 目的 了解SpringBoot Starter相关概念以及开发流程实现自定义SpringBoot Starter(全局加解密)了解测试流程优化 最终引用的效果&#xff1a; <dependency><groupId>com.xbhog</groupId><artifactId>globalValidation-spring…

《MySQL 简易速速上手小册》第3章:性能优化策略(2024 最新版)

文章目录 3.1 查询优化技巧3.1.1 基础知识3.1.2 重点案例&#xff1a;电商平台商品搜索3.1.3 拓展案例 1&#xff1a;博客平台的文章检索3.1.4 拓展案例 2&#xff1a;用户登录查询优化 3.2 索引和查询性能3.2.1 基础知识3.2.2 重点案例&#xff1a;电商平台的订单历史查询3.2.…