第十三章 Python操作数据库

news2024/11/24 18:00:55

系列文章目录

第一章 Python 基础知识
第二章 python 字符串处理
第三章 python 数据类型
第四章 python 运算符与流程控制
第五章 python 文件操作
第六章 python 函数
第七章 python 常用内建函数
第八章 python 类(面向对象编程)
第九章 python 异常处理
第十章 python 自定义模块及导入方法
第十一章 python 常用标准库
第十二章 python 正则表达式
第十三章 python 操作数据库


文章目录

  • 系列文章目录
  • pymysql模块准备与基本使用
    • pymysql模块
    • 基本使用
    • connect()函数常用参数
    • 连接对象常用方法
    • 游标对象常用方法
  • 数据库增删改查
  • 案例:查询数据库并格式化输出
  • 总结


pymysql模块准备与基本使用

pymysql模块

pymysql是python中操作MySQL的模块,其使用方法和MySQLdb几乎相同,但目前pymysql支持python3.x而后者不支持3.x版本
pymysql是第三方模块,需要单独安装,首选通过pip安装PyMySQL

pip3 install pymysql

基本使用

先创建库以及表

# 创建库
create database test;
创建表
use test;
create table user(id int primary key not null auto_increment,username varchar(50) not null,password varchar(50) not null);
查看表
show tables;
查看表类型
describe user;
from unittest import result
import pymysql
conn = pymysql.connect(host='127.0.0.1',
                        port=3306,
                        user='root',
                        password='123.com',
                        db='test',
                        charset='utf8',
                        cursorclass=pymysql.cursors.DictCursor
                        )
# 创建游标
cursor = conn.cursor()
# 向user表插入数据id是自增不需要插入
sql = "insert into user(username,password) values('root','123.com')"
cursor.execute(sql)
# 向数据库提交,进行写入
conn.commit()
sql = "select * from user"
cursor.execute(sql)
result = cursor.fetchone()
print(result)

在这里插入图片描述

connect()函数常用参数

方法描述
host数据库主机地址
user数据库账户
passwd账户密码
db使用的数据库
port数据库主机端口,默认3306
connect_timeout连接超时时间,默认10,单位秒
charset使用的字符集
cursorclass自定义游标使用的类,上面实例用的是字典类,以字典形式返回结果,默认是元组形式

连接对象常用方法

方法描述
commit()提交事务,对支持事务的数据库和表,如果提交修改操作,不适用这个方法,则不会写到数据库中
rollback()失误回滚,对支持事务的数据库和表,如果执行此方法,则回滚当前事务,在没有commit()前提下
cursor([cursorclass])创建一个游标对象,所有的sql语句的执行都要再游标对象下进行,mysql本身不支持游标,mysqldb模块对其游标进行了方针

游标对象常用方法

方法描述
close()关闭游标
excute(sql)执行sql语句
executemany(sql)执行多条sql语句
fetchone()从运行结果中取第一条记录,返回字典
fetchmany(n)从运行结果中取n条记录,返回列表
fetchall()从运行结果中取所有记录,返回列表
from unittest import result
import pymysql
conn = pymysql.connect(host='127.0.0.1',
                        port=3306,
                        user='root',
                        password='123.com',
                        db='test',
                        charset='utf8',
                        cursorclass=pymysql.cursors.DictCursor
                        )
try:
    with conn.cursor() as cursor:
        # 创建一条记录
        sql = "insert into user(username,password) values('wang','123.com')"
        cursor.execute(sql)
    # 写入到数据库
    conn.commit()

    with conn.cursor() as cursor:
        # 读取一条记录
        sql = "select id,username,password from user"
        cursor.execute(sql)
        result = cursor.fetchall()
        print(result)
finally: # 不管try有没有执行,都执行这个进行关闭数据库
    conn.close()

数据库增删改查

from sqlite3 import Cursor
from unittest import result
import pymysql
conn = pymysql.connect(host='127.0.0.1',
                        port=3306,
                        user='root',
                        password='123.com',
                        db='test',
                        charset='utf8',
                        cursorclass=pymysql.cursors.DictCursor
                        )
cursor = conn.cursor()
# 增
sql = "insert into user(username,password) values(%s,%s)"
args = [('张三','123.com'),('李四','123.com'),('王五','123.com')]
cursor.executemany(sql,args)
conn.commit()
# 删
sql = "delete from user  where id='7'"
cursor.execute(sql)
conn.commit()
# 改
sql = "update user set password='66666'  where id='6'"
cursor.execute(sql)
conn.commit()
# 查
sql = "select * from user"
cursor.execute(sql)
print('获取第一条记录:',cursor.fetchone())
print('获取指定多少条记录:',cursor.fetchmany(3))
print('获取所有记录:',cursor.fetchall())

在这里插入图片描述

案例:查询数据库并格式化输出

import pymysql
conn = pymysql.connect(host='127.0.0.1',
                        port=3306,
                        user='root',
                        password='123.com',
                        db='test',
                        charset='utf8',
                        cursorclass=pymysql.cursors.DictCursor
                        )
try:
    with conn.cursor() as cursor:
        # 读取一条记录
        sql = "select * from user"
        cursor.execute(sql)
        result = cursor.fetchall()
        for d in result:
            print(f"ID:{d['id']},用户名:{d['username']},密码:{d['password']}")
finally: # 不管try有没有执行,都执行这个进行关闭数据库
    conn.close()

总结

以上就是今天要讲的内容,本文仅仅简单学习了python操作数据库,针对数据库做增删改查。

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

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

相关文章

基于SSM的本科生导师指导平台设计实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

Scala语言使用Selenium库编写网络爬虫

目录 一、引言 二、环境准备 三、爬虫程序设计 1、导入必要的库和包 2、启动浏览器驱动程序 3、抓取网页内容 4. 提取特定信息 5. 数据存储和处理 四、优化和扩展 五、结语 一、引言 网络爬虫是一种自动抓取互联网信息的程序。它们按照一定的规则和算法,…

【VSS版本控制工具】

VSS版本控制工具 1 安装 VSS2 服务器端配置3 新建用户4 客户端配置Vss2005Vs20055 客户端详细操作 1 安装 VSS 第一步:将VisualSourceSafe2005安装包解压。 第二步:找到setup.exe双击运行。 第三步:在弹出的界面复选框中选中Iaccepttheterms…

Effective C++ 条款5:了解C++默默编写并调用哪些函数

编译器为一个空类声明一个拷贝构造函数、一个拷贝赋值操作符和一个析构函数,如果没有声明任何构造函数,编译器也会声明一个默认构造函数,所有的这些函数都是public且inline 因此,如果写下: class Empty{};…

少儿编程 2023年9月中国电子学会图形化编程等级考试Scratch编程三级真题解析(判断题)

2023年9月scratch编程等级考试三级真题 判断题(共10题,每题2分,共20分) 19、运行程序后,“我的变量”的值为25 答案:对 考点分析:考查积木综合使用,重点考查变量和运算积木的使用 开始我的变量为50,执行完第二行代码我的变量变为49,条件不成立执行否则语句,所以…

DBever 连接trino时区问题 The datetime zone id ‘GMT+08:00‘ is not recognised

DBever连接trino 测试连接成功,但是执行sql报时区不对、如果你默认使用的是大于jdk8的版本 会存在这个问题,因为jdk版本 jdk8 和jdk17 版本默认时区是不同的 trino官网明确说明了时区默认跟jdk走 解决方案 可以先行查看JDK本地时区库版本,执…

开发记录【1】

给列表加上序号 实现:Oracle有自带序号rownum,加上这个字段即可 【开发细节1】更新人可通过共享组件获取 【开发细节2】存入部门ID,想让其展示部门名,使用了共享组件,但是没显示,这是为什么呢? 【原因及解…

Python高级进阶(2)----Python装饰器的艺术

文章目录 装饰器基础示例代码:执行结果:参数化装饰器示例代码:执行结果:类装饰器示例代码:执行结果:装饰器的堆栈示例代码:执行结果:在Python中,装饰器是一种非常强大的特性,允许开发人员以一种干净、可读性强的方式修改或增强函数和方法。以下是一个关于Python装饰器…

当爱好变成职业,会不会就失去了兴趣?

当爱好变成职业,会不会就失去了兴趣? 当兴趣变成职业 1、学习能力变强了,积极主动性增加了。 2、学习努力变现了,赚到的更钱多了。 3、赚钱能力变强了,反过来再次促使兴趣发展(兴趣更大了....干劲更足了&…

SpringCloud——服务容错——Hystrix

1.现在的微服务存在哪些问题? 在大型的微服务项目中,肯定少不了服务之间多条链路调用,如果调用中有一个服务出现了问题,如果不做任何的处理,就会造成大量的阻塞,可能会导致整个服务雪崩。 2.要解决的问题 …

SpringCloud——服务网关——GateWay

1.GateWay是什么? gateway也叫服务网关,SpringCloud GateWay使用的是Webflux中的reactor-netty响应式编程组件,底层使用了Netty通讯框架。 gateway的功能有反向代理、鉴权、流量控制、熔断、日志监控...... 2.为什么不使用Zuul&#xff1f…

如何对IP地址进行定位

IP地址是互联网上用于标识和定位设备的关键元素。通过对IP地址进行定位,您可以确定设备的大致地理位置,这对于网络管理、安全监控和地理定位服务都非常有用。本文将介绍如何对IP地址进行定位的方法以及相关的重要注意事项。 IP地址定位的基本原理 IP地…

SpringCloud——服务注册——Eureka

1.Eureka概述 2.Eureka架构: Eureka中80服务要实现对8001和8002服务访问的负载均衡,需要在80服务的RestTemplate上面加LoadBalanced注解,默认采用的是轮询的策略。 3.Eureka自我保护 当一个EurekaClient注册进EurekaServer,Eurek…

佳能相机拍出来的dat文件怎么修复为正常视频

3-3 佳能相机是普通人用得最多的相机之一,也有一些专业机会用于比较重要的场景,比如婚庆、会议录像、家庭录像使用等。 但作为电子产品,经常会出现一些奇怪的故障,最严重的应该就是拍出来的东西打不开了。 本文案例是佳能相机拍…

自动还款业务事故案例,与金融场景幂等性思考

一、自动还款业务 事故 案例 事故名称: 自动还款业务事故 事故描述: 事故发生时间:201x-0x-18 0x:15:00 事故响应时间:201x-0x-20 0x:18:00 事故解决时间:201x-0x-20 0x:28:00 事故现象: 自动扣款,出现扣款…

中远麒麟堡垒机SQL注入漏洞复现

简介 中远麒麟堡垒机用于运维管理的认证、授权、审计等监控管理,在该产品admin.php处存在SQL 注入漏洞。 漏洞复现 FOFA语法: body"url\"admin.php?controlleradmin_index&actionget_user_login_fristauth&username" 或者 c…

SEO是什么?独立站如何进行SEO优化

创建一个独立网站并不是难事,但要做好独立网站并进行SEO优化以增加自然流量可能是一个不小的挑战。今天,我们将分享一些关于独立网站SEO优化的技巧,并详细探讨如何提升流量。 在本文中,我们将主要关注谷歌SEO,但请不要…

【力扣:1504】统计全1子矩阵

统计全1子矩阵个数 思路1:首先考虑深度优先模拟,从【0,0】出发向下、右扩展,符合条件res,最后输出res,比较直观,但重复进行了大量节点遍历操作,时间复杂度较高,数据量大时…

远程调用,参数压缩问题

错误信息 { "msg": "Error while extracting response for type [XXX] and content type [application/json;charsetUTF-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Illegal charac…

机器视觉软件破解的背后是道高一尺,魔高一丈

讲个故事,小明从某购物平台花2000元买了一个C#机器视觉架构,压缩包带加密,卖家让小明先确认收货后给密码。 小明花了3元从另外一家卖家破解开压缩包密码,然后迅速从第一家卖家退货。小明成功省了1997元。 “道高一尺&#xff0c…