Python之路【第二十五篇】:数据库之pymysql模块

2023-05-16

数据库进阶

一、pymysql模块

pymysql是Python中操作Mysql的模块,其使用的方法和py2的MySQLdb几乎相同。

二、pymysql模块安装


pip install pymysql  

三、执行sql语句


#_*_ coding:utf-8 _*_
# Author:Simon
# Datetime:2019/9/27 8:51
# Software:PyCharm

import pymysql

conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='lesson54')

cursor=conn.cursor()

cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)  //#更改获取数据结果的数据类型,默认是元组,可以改为字典等

# sql="CREATE TABLE TEST(id INT, name VARCHAR (20))"
# cursor.execute(sql)
# cursor.execute("INSERT INTO test VALUES (3,'simon1'),(4,'zhurui1')")

//查询
row_affected=cursor.execute("SELECT * FROM test")
# one=cursor.fetchone()
# all=cursor.fetchall()
# many=cursor.fetchmany(2)

print(cursor.fetchone()) print(cursor.fetchall()) print(cursor.fetchmany()) #scroll # cursor.scroll(-1,mode="relative") #相对当前位置移动 # cursor.scroll(1,mode="absolute") #相对绝对位置移动  conn.commit() //执行完sql,首先要提交 cursor.close() //关闭终端 # conn.close() //关闭连接                  

四、事务

4.1 事务命令

事务只逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功;

数据库开启事务命令


--        start transaction 开启事务
--        Rollback 回滚事务,即撤销指定的sql语句(只能回退insert delete update语句),回滚到上一次commit的位置
--        Commit 提交事务,提交未存储的事务
-- 
--        savepoint 保留点 ,事务处理中设置的临时占位符 你可以对它发布回退(与整个事务回退不同)    

转账实例:


mysql> create table account(id int,name varchar(20),balance double);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into test account values(1,"朱锐",16000);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'accou
nt values(1,"朱锐",16000)' at line 1
mysql> insert into account values(1,"朱锐",16000);
Query OK, 1 row affected (0.01 sec) mysql> insert into account values(2,"simon",46000); Query OK, 1 row affected (0.01 sec) mysql> select * from account; +------+--------+---------+ | id | name | balance | +------+--------+---------+ | 1 | 朱锐 | 16000 | | 2 | simon | 46000 | +------+--------+---------+ 2 rows in set (0.00 sec) mysql> start transaction; //开启事务 Query OK, 0 rows affected (0.00 sec) mysql> mysql> mysql> update account set balance=balance-5000 where id=1; //转账 Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from account; +------+--------+---------+ | id | name | balance | +------+--------+---------+ | 1 | 朱锐 | 11000 | | 2 | simon | 46000 | +------+--------+---------+ 2 rows in set (0.00 sec) mysql>  

rollback回退:


mysql> rollback;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from account;
+------+--------+---------+
| id   | name   | balance |
+------+--------+---------+
|    1 | 朱锐   |   16000 |
|    2 | simon  |   46000 |
+------+--------+---------+
2 rows in set (0.00 sec)

mysql>  

commit提交事务:


mysql> select * from account;
+------+--------+---------+
| id   | name   | balance |
+------+--------+---------+
|    1 | 朱锐   |   11000 |
|    2 | simon  |   46000 |
+------+--------+---------+
2 rows in set (0.00 sec)

mysql> update account set balance=balance+5000 where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from account; +------+--------+---------+ | id | name | balance | +------+--------+---------+ | 1 | 朱锐 | 11000 | | 2 | simon | 51000 | +------+--------+---------+ 2 rows in set (0.00 sec) mysql> commit; Query OK, 0 rows affected (0.00 sec) mysql>  

savepoint:


create table test2(id int PRIMARY KEY auto_increment,name VARCHAR(20)) engine=innodb;
INSERT INTO test2(name) VALUE ("simon"),
                              ("zhurui"),
                              ("caiyunjie");



start transaction;
insert into test2 (name)values('zhuruirui');
select * from test2; commit; -- 保留点 start transaction; insert into test2 (name)values('huozhu'); savepoint insert_wu; select * from test2; delete from test2 where id=4; savepoint delete1; select * from test2; delete from test2 where id=1; savepoint delete2; select * from test2; rollback to delete1; select * from test2; savepoint  

4.2 python中调用数据库启动事务的方式


import pymysql

#添加数据

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='test')

cursor = conn.cursor()


try:
    insertSQL0="INSERT INTO ACCOUNT2 (name,balance) VALUES ('caiyunjie',60000)" insertSQL1="UPDATE account2 set balance=balance-12700 WHERE name='simon'" insertSQL2="UPDATE account2 set balance=balance+12700 WHERE name='zhurui'" cursor = conn.cursor() cursor.execute(insertSQL0) conn.commit() cursor.execute(insertSQL1) raise Exception cursor.execute(insertSQL2) cursor.close() conn.commit() except Exception as e: conn.rollback() conn.commit() cursor.close() conn.close()  

转载于:https://www.cnblogs.com/hackerer/p/11596618.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之路【第二十五篇】:数据库之pymysql模块 的相关文章

  • opencv中矩阵计算的一些函数

    转自 xff1a http blog sina com cn s blog 7908e1290101i97z html 综述 OpenCV有针对矩阵操作的C语言函数 许多其他方法提供了更加方便的C 43 43 接口 xff0c 其效率与Op
  • mysql中对比 JSON_VALUE 与 JSON_QUERY

    1 JSON概述 MySQL里的json分为json array和json object 表示整个json对象 xff0c 在索引数据时用下标 对于json array xff0c 从0开始 或键值 对于json object xff0c
  • Win10系统的Microsoft Edge浏览器打开任一网页均未响应卡死的问题

    Edge浏览器在刚装上WIN10的时候就使用了 xff0c 的确给人耳目一新 xff0c 使用起来也非常顺心的感觉 xff0c 总体上还是很感人的 xff0c 可是今天使用突然出现随便打开一个网页都会卡死 xff0c 未响应的问题 xff0
  • 用二进制方法求两个整数的最大公约数(GCD)

    二进制GCD算法基本原理是 先用移位的方式对两个数除2 xff0c 直到两个数不同时为偶数 然后将剩下的偶数 xff08 如果有的话 xff09 做同样的操作 xff0c 这样做的原因是如果u和v中u为偶数 v为奇数 xff0c 则有gcd
  • SQL SERVER解析Json

    外包的项目 xff0c 有很多信息存储在JSON中 xff0c 无论是查询还是修改信息都十分麻烦 找了一些实用的SQL Function去解析 xff0c 并附修改例子 使用过程 xff1a 1 需要在SQL新建自定义类型 table Hi
  • c++ 头文件循环引用解法

    A h include 34 B h 34 class A public B m b B h include 34 A h 34 class B public A m a 上面这样是编译不过的 xff0c 把A h中的 include 34
  • 搭建ceph集群(单节点)

    https blog csdn net Greenchess article details 77525786 软件环境 xff1a Centos7 x64 CEPH版本 xff1a ceph deploy v1 5 37 ceph ver
  • Java-SpringCloud-基础

    一 服务注册与发现 服务注册 xff1a 服务提供者将服务的信息 xff08 IP 端口 协议等 xff09 登记到注册中心服务发现 xff1a 服务消费者根据一定策略从注册中心的服务列表选取一个服务 1 eureka span class
  • Ubuntu休眠不能唤醒问题之分区惹的祸

    问题描述 xff1a 休眠后进行唤醒时一直黑屏或内核错误 经历如下 xff1a 在笔记本上添加了固态硬盘后直接将机械硬盘上的系统拷贝到固态盘中使用 xff0c 设置了swap分区 xff0c 在唤醒时内核报告ext4文件系统错误 在lily
  • 用Keil-MDK开发TQ2440裸机程序入门教程——LED流水灯实现

    觉得此编文章很详实 xff0c 故转载之 xff0c 来自http www amobbs com thread 5281512 1 1 html 开发板也差不多买了半年了 以前照着教程用的是软件是ADS 在win7下老是崩溃 后来才知道AD
  • 【洛谷 3366】最小生成树_Prim

    题目描述 如题 xff0c 给出一个无向图 xff0c 求出最小生成树 xff0c 如果该图不连通 xff0c 则输出orz 输入格式 第一行包含两个整数N M xff0c 表示该图共有N个结点和M条无向边 xff08 N lt 61 50
  • 远程rdp vnc连接 UBuntu 10.10

    我打算用ubuntu编译Android源码 xff0c 因为编译时间较长需要远程控制一下自己的电脑 xff0c 所以想到了安装远程桌面软件 xff0c 具体方法 xff1a Ubuntu下的操作 1 Win7远程连接上Ubuntu xff0
  • AtCoder ABC 140E Second Sum

    题目链接 xff1a https atcoder jp contests abc140 tasks abc140 e 题目大意 给定一个 1 N 的排列 P 定义 X L R 的值为 P L P L 43 1 ldots P R 中第二大的
  • Sublime MinGw实现C/C++代码编译运行

    安装配置MinGw 下载安装MinGW 去官网下载MinGw xff1a http www mingw org 或者下载我已经下载好的完整版 xff1a http pan baidu com s 1gfgluin 2017 7 5更新 如图
  • Ajax发送POST请求SpringMVC页面跳转失败

    问题描述 xff1a 因为使用的是SpringMVC框架 xff0c 所以想使用ModelAndView进行页面跳转 思路是发送POST请求 xff0c 然后controller层中直接返回相应ModelAndView xff0c 但是这种
  • Debian命令

    1 dpkg i 安装下载的软件包 2 shutdown h now 关机 3 fdisk l 查看当前盘 4 lspci 用来显示系统中所有PCI总线设备或连接到该总线上的所有设备的工具 如lspci v 参数 xff1a v 使得 ls
  • 堡垒机-teleport的安装以及常见问题解决办法

    teleport是一款简单易用的堡垒机系统 xff0c 运用在企业对windows linux服务器的安全使用管理以及审计 官网网址 xff1a http teleport eomsoft net github地址 xff1a https
  • 【Luogu】P1593因子和(唯一分解定理,约数和公式)

    题目链接 首先介绍两个定理 整数唯一分解定理 xff1a 任意正整数都有且只有一种方式写出素数因子的乘积表达式 A 61 p1k1 p2k2 pnkn 求这些因子的代码如下 for int i 61 2 i i lt 61 a 43 43
  • 通用组件—SvgIcon引入和使用

    Svg Icon 创建一个专门放置图标 icon 的文件夹 xff1a src icons 添加SvgIcon组件到公共components目录下 src components SvgIcon index vue lt template g
  • [HDU3652]B-number

    题面描述 给定一个数 n 求 1 n 中所有满足以下条件的数的个数 xff1a 1 该数中不包含 34 13 34 2 该数能被13整除 输入格式 输入包含多行 xff0c 每行一个整数 n 1 leq n leq 1000000000 输

随机推荐

  • [GYM 101755]Restoring Numbers

    题面描述 已知两个正整数a b的和s与最大公约数g xff0c 求a b 输入格式 一共一行 xff0c 包含两个正整数 s g 输出格式 一共一行 xff0c 若有解输出 a b 否则输出 1 样例数据 样例输入 6 2 样例输出 4 2
  • 数位DP 详解

    序 天堂在左 xff0c 战士向右 引言 数位DP在竞赛中的出现几率极低 xff0c 但是如果不会数位DP xff0c 一旦考到就只能暴力骗分 以下是数位DP详解 xff0c 涉及到的例题有 xff1a HDU2089 不要62 HDU36
  • 关于485通信不稳定问题解决方案[STM32产品问题]

    485通讯不稳定的问题 xff08 具体表现为有时能通讯上 xff0c 有时通讯不上 xff09 RS485在连接设备过多 通讯距离过长 双绞线质量差 xff0c 接线不规范 等 xff0c 都会导致通讯不稳定的问题 解决方案 xff1a
  • Oracle update语句更新值来自另一张表中的数据

    task 任务表 role 角色表 两表之间必须有关联的字段 update task t set t roleName 61 select r name from role r where r id 61 t roleid 转载于 http
  • HTML个人简介

    lt doctype html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt meta name 61 34 Generator
  • 如何查看windows某个目录下所有文件/文件夹的大小?

    如何查看windows某个目录下所有文件 文件夹的大小 xff1f TreeSize Free绿色汉化版是一款硬盘空间管理工具 xff0c 用树形描述出来 xff0c 能够显示文件大小和实际占用空间数及浪费的空间等信息 xff0c 让你做出
  • Kafka服务不可用(宕机)问题踩坑记

    背景 某线上日志收集服务报警 xff0c 打开域名报502错误码 收集服务由2台netty HA服务器组成 netty服务器将客户端投递来的protobuf日志解析并发送到kafka xff0c 打开其中一个应用的日志 xff0c 发现如下
  • Sublime Text 的破解方式

    Sublime Text 破解 xff08 Mac和Windows系统 xff09 Posted on 2013 年 11 月 19 日 3 条评论 6 031 次浏览 继 续分享在 Mac OSX 和 Windows 下破解编码神器 xf
  • 洛谷P1233 木棍加工【单调栈】

    题目 xff1a https www luogu org problemnew show P1233 题意 xff1a 有n根木棍 xff0c 每根木棍有长度和宽度 现在要求按某种顺序加工木棍 xff0c 如果前一根木棍的长度和宽度都大于现
  • 高并发核心知识——ZooKeeper

    ZooKeeper 简介 ZooKeeper是一个开源的分布式协调服务 xff0c 重视高性能 高可用 严格有序的访问 Zookeeper中利用被称为znode的节点保存数据 xff0c 数据将保存在内存 ram 中 xff0c 最多存储1
  • https://gns3.com/community/discussion/gns3-doesn-t-work-on-vmware-play

    swered Question GNS3 doesn t work on VMWARE player 15 Hi guys today I try to install GNS3 on new VMWARE player 15 with V
  • 时间同步服务

    1 NTP时钟同步方式说明 NTP在linux下有两种时钟同步方式 xff0c 分别为直接同步和平滑同步 xff1a 直接同步 使用ntpdate命令进行同步 xff0c 直接进行时间变更 如果服务器上存在一个12点运行的任务 xff0c
  • The Windows 10 May 2020 Update无法更新问题,从1909升级到2004

    今天系统在更新的时候遇到系统提示如下信息 The Windows 10 May 2020 Update is on its way We re offering this update to compatible devices but y
  • 遇到Visual Studio "当前不会命中断点.还没有为该文档加载任何符号"的情况

    一 问题及原因 有这样一种调用逻辑 A exe调用B dll 现在想要在B的源代码中打断点 从A发起进行调试 却给出了 34 当前不会命中断点 还没有为该文档加载任何符号 34 的提示 感觉十分奇怪 各种重新生成 重启VS都没啥用 最后不得
  • Centos 7 Ntop 流量分析 安装

    Centos 6 安装 Ntop xff1a https www cnblogs com weijie0717 p 4886314 html 一 安装 1 添加EPEL 仓库 yum install epel release 2 创建 Nt
  • 三节点搭建openstack-Mitaka版本

    前言 xff1a 现在的云计算平台已经非常火 xff0c 也非常的稳定了 像阿里云平台 xff0c 百度云平台等等 xff0c 今天咱们基于openstack来搭建一个云平台 注意 xff1a 本次平台搭建为三节点搭建 xff08 没有外部
  • POJ滑动窗口

    题目描述 现在有一堆数字共N个数字 xff08 N lt 61 10 6 xff09 xff0c 以及一个大小为k的窗口 现在这个从左边开始向右滑动 xff0c 每次滑动一个单位 xff0c 求出每次滑动后窗口中的最大值和最小值 例如 xf
  • JsonSQL:用SQL语句解析JSON文件

    下午没事干 xff0c 到处闲逛发现一个好玩的东东 xff0c 发出来与大家共享 xff0c 哈哈 一个解析JSON的插件 xff0c 用SQL语法 xff0c 当然只能用简单的条件查询咯 xff0c 不过这个用起比较简单 xff0c 容易
  • windows系统cmd命令行设置、查看、更改环境变量

    问题场景 xff1a 在windows系统 xff0c 做flask项目需要配置qq邮箱的用户 密码 xff0c 为了安全性账户密码需要从OA机的环境变量中设置 获取 xff1a code import os app config 39 M
  • Python之路【第二十五篇】:数据库之pymysql模块

    数据库进阶 一 pymysql模块 pymysql是Python中操作Mysql的模块 xff0c 其使用的方法和py2的MySQLdb几乎相同 二 pymysql模块安装 pip install pymysql 三 执行sql语句 cod