Python基础之操作mysql数据库

news/2024/4/19 13:09:18/文章来源:https://blog.csdn.net/u011837804/article/details/129598805

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

Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:

  • GadFly

  • mSQL

  • MySQL

  • PostgreSQL

  • Microsoft SQL Server 2000

  • Informix

  • Interbase

  • Oracle

  • Sybase

  • PyMysql

这里我们以pymysql为例,演示操作mysql实现CRUD,其他数据库操作类似只是语法可能不一致。

1、安装pymysql

命令:

pip install pymysql

2、编写数据库连接

# 导入包
from pymysql import Connection# 创建连接对象
conn = Connection(host="localhost",  # 主机名或者IPport=3306,  # 端口user="root",  # 用户名password="root"  # 密码
)# 测试连接是否成功
print(conn.get_server_info())# 关闭连接
conn.close()

3、创建表

创建表之前,请先确认以下事项:

  • 您已经创建了数据库 test.

以下实例链接Mysql的test数据库,并创建test_python表的实例:

# 导入包
from pymysql import Connection# 创建连接对象
conn = Connection(host="localhost",  # 主机名或者IPport=3306,  # 端口user="root",  # 用户名password="root"  # 密码
)# 选择数据库
conn.select_db("test")# 使用cursor()方法获取操作游标 
cursor = conn.cursor()# 新建test_python表
cursor.execute(" CREATE TABLE test_python(id int, info varchar(255))")# 关闭连接
conn.close()

4、插入数据(重点)

以下实例使用执行 SQL INSERT 语句向表 test_python 插入记录:

# 导入包
from pymysql import Connection# 创建连接对象
conn = Connection(host="localhost",  # 主机名或者IPport=3306,  # 端口user="root",  # 用户名password="root",  # 密码autocommit=True  # 如果不想手动commit ,需要在这里配置自动commit参数
)# 选择数据库
conn.select_db("test")# 使用cursor()方法获取操作游标 
cursor = conn.cursor()# 插入数据
cursor.execute(" insert into test_python values(1,'测试信息')")# 注意这里一定要commit 否则事务未提交 导致数据数据没有插入成功
conn.commit()# 关闭连接
conn.close()

注意:插入时需要手动提交或者自动提交事务配置

6、查询数据

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象

  • fetchall():接收全部的返回结果行.

  • rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。

# 导入包
import pymysql.cursors
from pymysql import Connection# 创建连接对象
conn = Connection(host="localhost",  # 主机名或者IPport=3306,  # 端口user="root",  # 用户名password="root",  # 密码autocommit=True,  # 如果不想手动commit ,需要在这里配置自动commit参数cursorclass=pymysql.cursors.DictCursor  # 查询出的数据转换为字典
)# 选择数据库
conn.select_db("test")# 获取游标对象
cursor = conn.cursor()# 执行查询
cursor.execute(" select * from test_python ")# 获取所有数据
results = cursor.fetchall()# 循环所有获取到的数据
for result in results:print(result)# 关闭连接
conn.close()

7、执行事务

事务机制可以确保数据一致性。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

  • 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

  • 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

  • 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

  • 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。

# SQL删除记录语句
sql = "DELETE FROM test_python WHERE id = 1
try:# 执行SQL语句cursor.execute(sql)# 向数据库提交db.commit()
except:# 发生错误时回滚db.rollback()

对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。

commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。

8、错误处理

DB API中定义了一些数据库操作的错误及异常,下表列出了这些错误和异常:

异常

描述

Warning

当有严重警告时触发,例如插入数据是被截断等等。必须是 StandardError 的子类。

Error

警告以外所有其他错误类。必须是 StandardError 的子类。

InterfaceError

当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。 必须是Error的子类。

DatabaseError

和数据库有关的错误发生时触发。 必须是Error的子类。

DataError

当有数据处理时的错误发生时触发,例如:除零错误,数据超范围等等。 必须是DatabaseError的子类。

OperationalError

指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、 数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。 必须是DatabaseError的子类。

IntegrityError

完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类。

InternalError

数据库的内部错误,例如游标(cursor)失效了、事务同步失败等等。 必须是DatabaseError子类。

ProgrammingError

程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、 参数数量错误等等。必须是DatabaseError的子类。

NotSupportedError

不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上 使用.rollback()函数,然而数据库并不支持事务或者事务已关闭。 必须是DatabaseError的子类。

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

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

相关文章

一、简单了解ElasticSearch

目录一、ElasticSearch简介1.ES与关系型数据库对比2.什么是全文检索3.分词原理(基于倒排索引)二、核心概念1.索引index2.映射mapping3.字段filed4.字段类型type5.文档document6.集群cluster7.节点node8.分片9.副本三、搭建es单机版、集群版1.搭建es2.集成…

项目质量管理工作 不得不重视的4大关键点

1、三大视角确保项目质量 我们需要从客户视角、SOW视角和组织视角三大视角,确保项目的质量。 从客户视角方面出发,满足客户的要求,如项目交付的准时性、项目质量的保证等。我们需要全力保障客户对项目质量的要求。 从SOW视角确保项目质量&…

ffpmeg笔记:(2)学习一个开源小demo:qt+sdl+ffmpeg,计算时间戳

文章目录前言1.源码和编译方法1.1编译方法:2.源码简单介绍2.1 播放线程类 PlayThread2.1.1 计算当前播放进度时间2.2 主界面类 MainWindow2.2.1 在Qt widget中显示视频2.2.2 控制区域的自动隐藏和再现前言 这个小demo实现了下面的功能: 1.打开文件。 2.…

操作系统(2.4.5)--管程机制

1.管程的定义 利用共享数据结构抽象地表示系统中的共享资源,而把对该共享数据结构实施的操作定义为一组过程进程对共享资源的申请、释放和其它操作,都是通过这组过程对共享数据结构的操作来实现的,这组过程还可以根据资源的情况,或…

跟着本文走,告诉你五类walmart最爱产品

在我们跨境圈一直流传着一句话,选品选的好啊,红利吃饱饱。选品的重要性相信不用龙哥多说,选品基本上就是决定了店铺的未来。好的选品不用愁流量、也不用担心走不长久。今天龙哥就来聊聊在walmart上,哪些选品是值得发展的。walmart…

synchronized 加锁 this 和 class 的区别

synchronized 是 Java 语言中处理并发问题的一种常用手段,它也被我们亲切的称之为“Java 内置锁”,由此可见其地位之高。然而 synchronized 却有着多种用法,当它修饰不同对象时,其意义也是不同的,下面我们一起来看。 ​…

实在智能RPA受邀出席2023年东莞市数字赋能峰会,聚力数智制造

3月17日,“数字东莞 科创强市2023年东莞市数字赋能峰会”在松山湖光大We谷圆满举行。本次大会以创新性、专业性、平台化、战略性等为特色,涵盖当今前沿技术、行业痛点、商业模式。会上中国信通院的专家分享了《东莞市数字经济发展报告(2022年…

刷题day40:从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树

一、从中序与后序遍历序列构造二叉树 题意描述: 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 需要利用后续遍历(左右中…

java校园报修管理系统ssm

用户的主要功能有: 1.用户注册和登陆登陆系统 2.用户查看报修类型,在线申请报修信息 3.用户对报修信息进行评价 4.用户查看资讯公告信息 5.用户查看个人信息,修改个人信息,修改密码 6.用户在线提交意见反馈信息 7.用户查看报修记录…

记录一次接口套娃数据处理

由于后端接口设计历史遗留问题,要求在一个接口中,通过他返回的数据去请求其他接口,数据以表格的形式渲染出来 目录 前言 一、每次仅展示一个步骤图 二、整合接口数据,一次性渲染 1.请求步骤条接口的地方对数据进行处理 2.修改…

完全小白的pycharm深度学习调试+for循环断点条件设置

完全小白的pycharm深度学习调试for循环断点条件设置写在最前面基础方法pycharm断点调试控制台输入代码中循环的debug方法pycharm中图标的介绍常见的BugDebug经验1. 检查激活函数的输入值2. 检查梯度3. 消融实验4. 使用最短的时间5. 静下心来写在最前面 之前把seq2seqattention…

简单分析Linux内核基础篇——initcall

写过Linux驱动的人都知道module_init宏,因为它声明了一个驱动的入口函数。 除了module_init宏,你会发现在Linux内核中有许多的驱动并没有使用module_init宏来声明入口函数,而是看到了许多诸如以下的声明: static int __init qco…

C++基础算法③——排序算法(选择、冒泡附完整代码)

排序算法 1、选择排序 2、冒泡排序 1、选择排序 基本思想:从头至尾扫描序列,每一趟从待排序元素中找出最小(最大)的一个元素值,然后与第一个元素交换值,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序…

Redis(十四)【Redisson分布式锁基础介绍】

分布式锁 Redisson 一、Redisson 概述 什么是 Redisson Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。 Redisson 的宗旨是促进使…

【数据分析之道①】字符串

文章目录专栏导读1、字符串介绍2、访问字符串中的值3、字符串拼接4、转义字符5、字符串运算符6、字符串格式化7、字符串内置函数专栏导读 ✍ 作者简介:i阿极,CSDN Python领域新星创作者,专注于分享python领域知识。 ✍ 本文录入于《数据分析之…

SpringCloud:初识RabbitMQ及快速入门

1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,但…

每个开发人员都需要掌握的10 个基本 SQL 命令

SQL 是一种非常常见但功能强大的工具,它可以帮助从任何数据库中提取、转换和加载数据。数据查询的本质在于SQL。随着公司和组织发现自己处理的数据量迅速增加,开发人员越来越需要有效地使用数据库来处理这些数据。所以想要暗恋数据领域,SQL是…

数据挖掘(作业汇总)

目录 环境配置 实验1 数据 作业2 环境配置 实验开始前先配置环境 以实验室2023安装的版本为例: 1、安装anaconda:(anaconda自带Python,安装了anaconda就不用再安装Python了) 下载并安装 Anaconda3-2022.10-Windows-x86_64.ex…

分片压缩、分片上传,融云 IM 视频文件高速传输方案

在 IM 消息管理中,多种类型消息的传输处理是服务可靠性的关键。关注【融云全球互联网通信云】了解更多 通常,发送消息前,融云 IM 会将发送的媒体文件上传到默认文件服务器。 而在文本、表情、图片、语音、位置、小视频等各种消息中&#xf…

unity+vs code+mac环境安装配置

参考资料:unity官方文档:https://docs.unity3d.com/cn/current/Manual/ScriptingToolsIDEs.html安装unity1、打开unity中国官网下载,https://unity.cn/releases#undefined2、安装成功后,登录帐号。3、安装unity 推荐版本mac 配置C…