零基础学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.mzph.cn/news/674035.shtml

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

相关文章

【51单片机】要实现动静态数码管,你首先需要知道这些【数码管项目前置知识】

前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含: 本章节内容为【实现动静态数码管】项目的第一个模块完整章节:传送门 欢迎订阅 YY滴C专栏!更多干货持…

QT styleSheet——控件设置样式表

QT开发中,需要设置多种多样的控件表现形式,QT实现的styleSheet能够满足多种多样的场景,这里简单的记录下一些我常用的 设置透明背景,鼠标悬浮时,设置背景色: pushButton->setStyleSheet("QPushBu…

Unity接入GVoice腾讯实时语音

Unity接入GVoice腾讯实时语音 一、介绍二、注册GVoice创建项目语音服务1.创建项目2.申请语音权限3.项目管理查看SDK初始化的一些参数和基本信息4.GVoice检测 三、SDK下载SDK是分为两种类型:独立版集成板 SDK放入Unity工程中 四、语音代码写法五、GVoice踩坑语音权限…

【canvas】获取鼠标点击位置坐标的颜色信息

在项目当中,要实现某业务需求例如PS魔棒功能时,则需要获取点击坐标的颜色信息。 功能不复杂,代码也很少,一看便知~~ 核心API为getImageData,传入4个参数,前2个为点击坐标xy,后2个都传1&#xf…

python调用golang中函数方法

一、原因说明:由于simhash方法有多种实现方式,现python中simhash方法与golang中的不一样,需要两者代码生成结果保持一致,故采用python中的代码调用golang编译的so文件来实现。 环境配置:①Windows10系统要有gcc环境&a…

ADSelfService Plus发布离线MFA功能,强化远程工作安全性

ManageEngine ADSelfService Plus推出离线多因素身份验证,提升远程工作安全性确保通过先进的验证方法对企业数据进行授权访问,无论时间、地点或连接问题如何允许远程用户安全进行身份验证,即使未连接到认证服务器或互联网使用高度安全的基于T…

每周编辑精选|希尔贝壳语音数据集系列上线、中国学者建立乳腺癌预后评分系统 MIRS

🏮新春佳节,归程千里为团圆 🏮人间烟火,年味浓浓阖家欢 辞别玉兔,金龙迎春。明晚就是大年三十除夕夜了!HyperAI超神经在这里提前祝大家新春快乐~龙行龘龘(d)!本周 hyper.ai 官网上线…

Lua协程-coroutine

lua也有协程这个机制,用以完成非抢占式的多任务处理。 协程与线程 协程和线程类似,有自己的堆栈、局部变量、指令指针等等。但同时也有不一致的地方,其中最重要的地方在于多线程程序可以同一时间运行多个线程,而协程同一时间只能…

Vue前端框架--Vue工程项目问题总结{脚手架 Vue-cli}

Vue脚手架部署问题总结 我所遇到的一共两大问题 只有先执行npm install之后 才能run serve 否则会报错 vue-cli-serve不是内部或者外部的命令,也不是可运行的程序或者批处理文件的错误 1. 运行npm install会报错 2. 运行npm run serve报错 nodejs官网为 https://no…

C#中实现串口通讯和网口通讯(使用SerialPort和Socket类)

仅作自己学习使用 1 准备部份 串口通讯需要两个调试软件commix和Virtual Serial Port Driver,分别用于监视串口和创造虚拟串口。网口通讯需要一个网口调试助手,网络上有很多资源,我在这里采用的是微软商店中的TCP/UDP网络调试助手&#xff0…

【leetcode热题100】删除排序链表中的重复元素

难度: 简单通过率: 41.5%题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->…

cleanmymacX和腾讯柠檬哪个好用

很多小伙伴在使用Mac时,会遇到硬盘空间不足的情况。遇到这种情况,我们能做的就是清理掉一些不需要的软件或者一些占用磁盘空间较大的文件来腾出空间。我们可以借助一些专门的清理工具,本文中我们来推荐几款好用的Mac知名的清理软件。并且将Cl…

C语言:亲密数对

题目描述 在自然数中有一种这样的数:它自身是一个完全平方数,加上1之后是一个素数,这一对数被称为亲密数对,请编程找出指定区域内的所有亲密数对。 例如在[10,100]之间的亲密数对有:(16,17)&am…

SQL在云计算中的新角色:重新定义数据分析

文章目录 1. 云计算与数据分析的融合2. SQL在云计算中的新角色3. 分布式SQL查询引擎4. SQL-on-Hadoop解决方案5. SQL与其他数据分析工具的集成6. 实时数据分析与SQL7. SQL在云数据仓库中的角色8. 安全性与隐私保护9. SQL的未来展望《SQL数据分析实战(第2版&#xff…

SQL笔记-2024/01/31

cross join 两个表的笛卡尔积 例如: select s.name student_name,s.age student_age,s.class_id class_id,c.name class_name from student s cross join class c; 子查询 select s.name name,s.score score,s.class_id class_id from student s where s.class_id …

14.scala隐式转换

目录 概述实践代码执行结果 结束 概述 隐式转换:偷偷的(隐式)对现有功能进行增强(转换) 实践 代码 package com.fun.scalaimport java.io.File import scala.io.Sourceobject ImplicitApp {def main(args: Array[String]): Unit {// implicit 2 to 等价 &…

vuecli3 执行 npm run build 打包命令报错:TypeError: file.split is not a function

问题 今天有个项目在打包的时候遇到了一个问题,就是执行 npm run build 命令的时候报错了,如下: 解决 我排查了一下,模拟代码如下:在打包的时候用了 MinChunkSizePlugin const webpack require("webpack"…

LabVIEW多任务实时测控系统

LabVIEW多任务实时测控系统 面对现代化工业生产的复杂性和多变性,传统的测控系统已难以满足高效、精准、可靠的监控和控制需求。因此,开发一种基于LabVIEW的智能测控系统,能够提高生产效率,保证生产安全,是解决现代工…

ubuntu 没有屏幕安装QT(SSH远程登陆下)

1背景说明 需要在SSH登陆的ubuntu远程上安装QT,但是远程电脑没有屏幕,报了这个错误“QXcbConnection: Could not connect to display”。 2网上搜索有2种解决方案 由于远程服务器没有配置屏幕,都失败了 2.1配置屏幕关闭 vim ~/.bashrc …

打卡今天学习的命令 (linux

1.1 cp - 复制文件或目录 cp source destination cp -r source_directory destination # 递归复制目录及其内容1.2 rm - 删除文件或目录 rm file rm -r directory # 递归删除目录及其内容1.3 mv - 移动/重命名文件或目录 mv source destination mv old_name new_name # 重…