Python高级之操作Mysql

Python高级

文章目录
  • Python高级
    • python操作数据库mysql-connector
      • demo_mysql_test.py:
    • pyMysql

python操作数据库mysql-connector

本章节为大家介绍使用mysql-connector来连接使用 MySQL,mysql-connectorMySQL官方提供的驱动器。

可以使用pip命令来安装mysql-connector

python -m pip install mysql-connector

使用以下代码测试 mysql-connector 是否安装成功:

demo_mysql_test.py:

import mysql.connector

执行以上代码,如果没有产生错误,表明安装成功。

注**意:**如果你的 MySQL 是 8.0 版本,密码插件验证方式发生了变化,早期版本为 mysql_native_password,8.0 版本为 caching_sha2_password,所以需要做些改变:

先修改 my.ini 配置:

[mysqld] default_authentication_plugin=mysql_native_password

然后在 mysql 下执行以下命令来修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

# mysql-connect test import mysql.connector mysqlDb = mysql.connector.connect( host='localhost', user='root', password='Lh_198571', database = 'db_python' ) # 创建数据库 def createDb(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("create database db_python2") print('数据库创建成功') # createDb(mysqlDb) # 查看数据库 def showDb(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("SHOW DATABASES") for i in cursor: print(i) # showDb(mysqlDb) # 创建表 # 创建表必须选中数据库才能创建,因此在创建表时,必须在connect中添加database指定数据库 def createTable(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("CREATE TABLE tb_user(id int not null primary key auto_increment,name varchar(20),sex int)") # createTable(mysqlDb) # 执行insert语句 def insert(mysqlDb): cursor = mysqlDb.cursor() try: cursor.execute("INSERT INTO tb_user(name,sex) values('sofwin2',0)") print('insert成功') except: print('插入异常') finally: mysqlDb.commit() # insert(mysqlDb) # 查询语句 def query(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("select * from tb_user") users = cursor.fetchall() for user in users: print(user[0]) print(user[1]) print(user[2]) query(mysqlDb) # 将查询语结果封装到list中,每个标位为dict def queryAll(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("select * from tb_user") users = cursor.fetchall() userList=[] for user in users: u = {} u['id'] = user[0] u['name'] = user[1] u['sex'] = user[2] userList.append(u) print(userList) queryAll(mysqlDb) # 定义user对象 class User: id = 0 name = '' sex = 0 def __init__(self,id, name, sex): self.id = id self.name = name self.sex = sex def __str__(self): print('用户id:'+ str(self.id)+',name:'+self.name+',sex:'+ str(self.sex)) # list中封装User对象 def queryAll2(mysqlDb): cursor = mysqlDb.cursor() cursor.execute("select * from tb_user") users = cursor.fetchall() userList=[] for x in users: u = User(x[0],x[1],x[2]) userList.append(u) print(userList.__str__()) queryAll2(mysqlDb) # 修改 def update(mysqlDb): cursor = mysqlDb.cursor() try: cursor.execute("update tb_user set name='helloWorld' where id = 2") finally: mysqlDb.commit() update(mysqlDb) # delete语句 def delete(mysqlDb): cursor = mysqlDb.cursor() try: cursor.execute("delete from tb_user where id = 3") finally: mysqlDb.commit() delete(mysqlDb) queryAll(mysqlDb)

pyMysql

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2 中则使用 mysqldb。

PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。

PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。

如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:

$ pip install PyMySQL # pyMysql import pymysql db = pymysql.connect( host='localhost', user='root', password='Lh_198571', database='db_python' ) # 查询 def query(): # 创建游标对象 cursor = db.cursor() # 执行查询方法 cursor.execute("select * from tb_user") # 获取到元组 result = cursor.fetchall() print(type(result)) print(result) # 插入 第一个参数不能为默认参数 def insert(name, sex, mdb=db): cursor = mdb.cursor() try: print("insert into tb_user(name,sex) values('" + name + "'," + str(sex) + ")") cursor.execute("insert into tb_user(name,sex) values('" + name + "'," + str(sex) + ")") finally: mdb.commit() insert('a1', 10) # 删除 def delete(id, mdb=db): cursor = mdb.cursor() try: cursor.execute("delete from tb_user where id = 5") finally: mdb.commit() delete(5) # 修改 def update(id, mdb=db): cursor = mdb.cursor() try: cursor.execute("update tb_user set name ='aaaaa' where id=" + str(id)) finally: mdb.commit() # 根据id 查询一调数据 def getOne(id, mdb = db): cursor = mdb.cursor() cursor.execute("select * from tb_user where id=" + str(id)) result = cursor.fetchone() # tuple 元组 print(type(result)) print(result) getOne(4) update(6) query()

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

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

相关文章

35 岁职场危机?网络安全这行为啥越老越吃香?

前几天我表弟小王来找我喝茶,聊着聊着突然问我:“老曹,你说我要不要转行做网络安全啊? 听说这行业挺赚钱的。 “我一听就笑了,这不正好最近我刚研究过这个行业吗? 我跟他说,别看现在各行各业…

cruise仿真模型,四轮驱动。 轮毂电机,轮边电机驱动cruise动力性经济性仿真模型,ba...

cruise仿真模型,四轮驱动。 轮毂电机,轮边电机驱动cruise动力性经济性仿真模型,base模型,适用轮边电机驱动及轮毂电机驱动。 可进行动力性经济性仿真分析,控制策略包含扭矩控制及能量回收控制使用c-code编写&#xff0…

SpringBoot+Vue 课程答疑系统管理平台源码【适合毕设/课设/学习】Java+MySQL

💡实话实说: 有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。 摘要 随着信息技术的快速发展,教育信息化已成为现代教育的重要组成部分。传统的课程答疑方式通常依赖于面对面交流或简单的在线工具&…

从零实现framebuffer显示:裸机环境下简单图形输出教程

点亮第一行像素:在裸机中实现Framebuffer图形输出的硬核实践你有没有试过,在一块全新的开发板上电后,除了串口打印出几行冰冷的“Hello World”,屏幕却始终漆黑一片?这种“看得见摸不着”的调试困境,正是许…

前后端分离BB平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

💡实话实说:有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 随着互联网技术的快速发展,传统单体架构的Web应用逐渐暴露出开发效率低、维护成本高、扩展性差等问题。前后端分离架构因其模块化、高内…

安全副业指南:漏洞挖掘 / 技术博客 / 竞赛奖金实战,哪个方向更适合你?

安全副业指南:漏洞挖掘 / 技术博客 / 竞赛奖金实战 很多安全从业者和学生都想通过技能赚 “外快”,却陷入 “想做漏洞挖掘怕没经验,想写博客怕没人看,想打竞赛怕拿不到奖” 的困境。其实安全副业的核心不是 “天赋”,而…

【教程4>第10章>第21节】基于FPGA的图像Laplace边缘提取算法开发——理论分析与matlab仿真

目录 1.软件版本 2.图像Laplace边缘提取算法理论概述 3.图像Laplace边缘提取的matlab仿真测试 欢迎订阅FPGA/MATLAB/Simulink系列教程 《★教程1:matlab入门100例》 《★教程2:fpga入门100例》 《★教程3:simulink入门60例》 《★教程4:FPGA/MATLAB/Simulink联合开发入门与进…

STM32新手必看:Keil5代码自动补全设置手把手教程

让Keil5像现代IDE一样聪明:STM32开发中代码自动补全的真正打开方式你有没有过这样的经历?在写HAL_GPIO_的时候,脑子里明明记得有个初始化函数,但就是拼不对——是_Init()还是_Initialize()?大小写对吗?参数…

Java Web 购物推荐网站系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

💡实话实说:有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 随着电子商务的快速发展,个性化推荐系统成为提升用户体验和促进销售的重要手段。传统的购物网站往往缺乏精准的用户行为分析和个性化推…

uds31服务ECU侧内存访问权限控制解析

uds31服务ECU侧内存访问权限控制解析:从协议到实战的深度拆解一次误刷导致整车停线?问题出在哪儿?某OEM在产线上进行ECU软件刷新时,一台车辆突然进入不可恢复的“砖机”状态——无法启动、诊断仪失联。事后排查发现,问…

STM32F4上实现USB2.0全速传输手把手教程

手把手教你用STM32F4实现稳定高效的USB 2.0全速通信你有没有遇到过这样的场景:项目需要实时上传大量传感器数据,但UART太慢、SPI又不方便接电脑,Wi-Fi功耗太高?这时候,USB就成了嵌入式开发者的“终极武器”——即插即用…

【毕业设计】SpringBoot+Vue+MySQL 知识管理系统平台源码+数据库+论文+部署文档

💡实话实说:有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 在信息化快速发展的时代背景下,知识管理已成为企业和教育机构提升竞争力的重要手段。传统知识管理方式依赖纸质文档或分散的电子文件&a…

免费录屏水印工具:自动生成多种类型格式

软件介绍 今天要推荐的这款小工具是“御风屏幕水印屏幕水印生成”,它专门解决录屏时加水印的麻烦——能自动生成屏幕水印,不用后期再用其他软件折腾,用起来特别省心,尤其适合经常录屏分享的小伙伴。 体积与安装 这软件小到离…

LVGL GUI框架移植:零基础入门必看技术解析

从零开始搞定LVGL移植:嵌入式GUI实战全解析你是不是也遇到过这种情况?项目要做一个带触摸屏的设备,老板说“界面要做得像手机一样流畅”,可你手里的开发板连个图形库都没有。查了一圈发现大家都在用LVGL,但一上手就卡在…

从Boost的设计哲学到工业实践:解锁下一代AI中间件架构的密码

引言:当AI基础设施撞上“范式之墙”2024年Stack Overflow开发者调查揭示了一个令人深思的现象:72%的高级C工程师在构建高性能中间件时,正经历“范式选择困难症”——他们不断在面向对象(OOP)、泛型编程(GP&…

SpringBoot+Vue 高校学科竞赛平台管理平台源码【适合毕设/课设/学习】Java+MySQL

💡实话实说:有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 在高等教育快速发展的背景下,学科竞赛作为培养学生创新能力和实践能力的重要途径,受到越来越多高校的重视。然而&#xff0…

Keil C51多文件编译策略:8051工程管理完整示例

Keil C51多文件编译实战:构建模块化8051工程的完整路径你有没有遇到过这样的情况?一个简单的LED闪烁程序,最后变成几千行挤在main.c里的“面条代码”,改一处,全盘崩溃。调试时像在迷宫里找出口,而团队协作更…

嵌入式开发避坑指南:HardFault_Handler问题定位核心要点

硬故障不“黑盒”:一文打通Cortex-M硬异常定位的任督二脉你有没有遇到过这样的场景?代码烧进去,板子上电,跑着跑着突然就“死了”——LED停闪、串口无输出、看门狗不断复位。连上调试器一看,PC指针死死地卡在HardFault…

Linux命令-ipcrm命令(删除Linux系统中的进程间通信(IPC)资源)

📖说明 ipcrm 命令用于删除Linux系统中的进程间通信(IPC)资源,包括消息队列、共享内存和信号量集。以下是对其用法和关键注意事项的总结。 🔑 核心参数速览 下表列出了 ipcrm 命令的主要参数及其用途:参数功…

STM32F4开发必备:固件包下载完整指南

STM32F4开发第一步:固件包下载与配置实战全解析 你有没有遇到过这样的情况?刚打开STM32CubeMX准备新建项目,结果提示“未安装对应固件包”,点击更新又卡在99%不动,或者干脆报错“Failed to download package”&#xf…