# PythonClasses **Repository Path**: boxSuper/PythonClasses ## Basic Information - **Project Name**: PythonClasses - **Description**: Python 之 网络爬虫阶段 课件代码案例 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-08-26 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PythonClasses #### 项目介绍 Python 之 网络爬虫阶段 课件代码案例 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本项目 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) 数据库—事务 背景:银行转账过程中,如果发生了意外,需要使用事务进行处理。 A账号有余额1000元,向余额为200元的B账号进行转账500元。由于发生了某些故障,造成A账号在转账过程中出现了错误,需要使用事务回滚(rollback)。如果A账号成功扣款,转账完成,B账号余额增加500元。 不使用事务产生的问题: 1、当A账号进行转账扣款时,发生错误。B账号并没有收到转账金额500元。而A账号已经提示完成扣款。 2、当A账号进行转账发生错误,未成功扣款,而B账号提示收到转账金额500元。 我们称上述的情况产生的数据为脏数据。 具体步骤: 1、关闭MySQL自动提交功能。set autocommit = 0; 2、开启事务:start transaction/begin 3、执行相应的SQL操作 4、提交或回滚 5、将MySQL自动提交功能开启 set autocommit = 1; 概念:在MySQL中事务主要用于处理操作量大,复杂度高的数据。只有定义了InnoDB引擎的数据库才支持事务。事务处理可以用来维护数据库的完整性,保证SQL操作要么全完成,要么全不执行。 事务满足四个特性:ACID A:原子性。一个事务中的所有操作,会作为一个整体来看待即,在执行时如果有一个操作没有成功,那么所有操作都将被回滚。回到事务开始前的状态。 C:一致性。在事务开始之前和事务结束之后,数据库的完整性没有被破坏,说明写入的资料符合数据库的所有设置的规则,包括数据的精度。 I:隔离性。数据库允许同时并发多个事务,并且同时对数据库进行读写操作,隔离性可以保证防止多个事务并发执行时由于交叉执行从而导致数据不一致。 事务的隔离分为:读未提交、读提交、可重复读、串行化。 D:持久性。事务处理结束后,对数据的修改是永久的,即存储在数据库中。 MySQL数据库中myisam与innodb的区别 1、MyISAM是非事务安全型的,而InnoDB是事务安全型 2、MyISAM是锁支持到表级,而InnoDB支持行级。 3、MyISAM支持全文检索,而InnoDB不支持全文检索 4、MyISAM表保存为文件形式的,有利于跨平台时进行数据转移,而InnoDB比MyISAM更安全,可以保证表中数据不丢失的情况下,切换非事务到事务表。 5、如果在实际应用中,需要执行大量的select查询,那么MyISAM是优先选择的。 如果需要执行大量的增删改操作,那么InnoDB是优先选择的,可以提高多用户并发操作的性能。 通常,我们在实现构建数据库服务器时,采用读写分离的方式,即设置一台读服务器,一台写服务器,同时两台服务器进行数据同步。