Python的学习笔记DAY12---python和Mysql之二
来源:互联网 发布:网络教育专业 编辑:程序博客网 时间:2024/06/05 00:57
今天来看insert,update和delete的操作。它们三个的操作和select的在大体上是相同的,不过这三条命令对数据库的数据进行了修改,所以在某些时候可能会发生异常,所以在使用corsor.execute(sql)后如无异常则使用conn.commit()提交事务,如有异常则使用conn.rollback()回滚事务。所谓事务,就是访问和更新数据库的一个程序执行单元它具有四个特性:
1.原子性:事务中包含的诸操作,要么都做,要么都不做
2.一致性:事务必须使数据库从一致性状态变到另一个一致性状态
3.隔离性:一件事务执行不被其他事务干扰
4.持久性:事务一旦提交,其对数据库的改变是永久的
故在开发中要关闭自动commit,设置conn.aotucommit(False),正常结束事务conn.commit(),异常结束事务conn.rollback()。
有如下图结构数据表user:
使用如下代码:
# -*- coding:utf-8 -*- import pymysqlpymysql.install_as_MySQLdb()import MySQLdbconn = MySQLdb.connect(host = '127.0.0.1', port = 3306, user = 'root', passwd = '123456', db = 'pytest', charset = 'utf8' )cursor = conn.cursor()sql_insert = "insert into user(user,name,age) values('ten','十',10)"sql_update = "update user set name = '9' where user = 'nine'"sql_delete = "delete from user1 where age < 3" cursor.execute(sql_insert)print(cursor.rowcount)cursor.execute(sql_update)print(cursor.rowcount)cursor.execute(sql_delete)print(cursor.rowcount)conn.commit()cursor.close()conn.close()运行后输出:
1
1
2
此时数据表变成了:
操作执行成功。
需要注意的是第一行必须加上下面的代码,不然的话汉字的插入会出现乱码现象。
# -*- coding:utf-8 -*-上面的代码表示了insert,update和delete的用法,在实际操作中,会将SQL语句和其执行语句放到try中,诶下图代码所示,我们, 将sql_delete的SQL语句中的user改为user1来制造个异常看他如何处理。
首先将数据库恢复到上面的数据。然后执行如下代码:
# -*- coding:utf-8 -*- import pymysqlpymysql.install_as_MySQLdb()import MySQLdbconn = MySQLdb.connect(host = '127.0.0.1', port = 3306, user = 'root', passwd = '123456', db = 'pytest', charset = 'utf8' )cursor = conn.cursor()try: sql_insert = "insert into user(user,name,age) values('ten','十',10)" sql_update = "update user set name = '9' where user = 'nine'" sql_delete = "delete from user1 where age < 3" cursor.execute(sql_insert) print(cursor.rowcount) cursor.execute(sql_update) print(cursor.rowcount) cursor.execute(sql_delete) print(cursor.rowcount) conn.commit()except Exception as e: print(e) conn.rollback()cursor.close()conn.close()执行结果如图:
没有找见user1这个表,然后查看数据库,并未改变,表明在执行出错之后执行了conn.rollback(),回滚了事务,并没有对数据库进行修改。
0 0
- Python的学习笔记DAY12---python和Mysql之二
- python学习笔记之二
- Python学习笔记之二——Python的运行机制
- python自动化之路-day12
- Python的学习笔记DAY11---python和Mysql
- Python--day12 python生成式和生成器
- python之dict学习笔记之二
- Python学习笔记之二 文本文件合并
- python学习笔记之二---object
- python学习笔记之二(ConfigParser补充)
- Python基础学习笔记之(二)
- Python学习笔记之(二)
- 二、PYTHON 学习笔记之multiprocessing
- python学习笔记(二)之函数
- Python学习笔记之语法(二)
- Python基础学习笔记之二
- python 学习笔记二之sklearn 库
- Python基础学习笔记之(二)
- 205. Isomorphic Strings
- MongoDB中聚合(aggregate)的使用
- Mushroom的区间 题解
- jq-选择器
- Android7.0 Rild工作流程
- Python的学习笔记DAY12---python和Mysql之二
- js 动态创建forn 并提交数据
- 设计模式
- [Unity3D——用代码说明一切]Unity结合Kinect2体感开发:Kinect面部识别
- 浅谈 MVP in Android
- 第三天:JavaScript的内存是怎么释放的
- 源码-Oracle数据库管理-第十三章-子程序和包-Part 3(子程序参数)
- JavaScript数据类型
- linux杂记7