mysql 操作数据
来源:互联网 发布:法国盐之花淘宝 编辑:程序博客网 时间:2024/05/22 03:06
1.mysql事务
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如,你操作一个数据库,公司的一个员工离职了,你要在数据库中删除他的资料,也要删除该人员相关的,比如邮箱,个人资产等。这些数据库操作语言就构成了一个事务。
在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎。
事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。
一般来说,事务是必须满足4个条件(ACID):Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)
1、事务的原子性:一组事务,要么成功;要么撤回。
2、稳定性 : 有非法数据(外键约束之类),事务撤回。
3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得,innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。
登录mysql服务器,进入mysql,执行以下命令:
mysql> show variables like 'auto%';+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| auto_increment_increment | 1 || auto_increment_offset | 1 || autocommit | ON || automatic_sp_privileges | ON |+--------------------------+-------+4 rows in set (0.00 sec)
如上所示: 有一个参数autocommit就是自动提交的意思,每执行一个msyql的select,insert,update等操作,就会进行自动提交。
如果把改选项关闭,我们就可以每次执行完一次代码就需要进行手动提交,connect对象给我们提供了两种办法来操作提交数据。
a) mysql事务的方法
commit():提交当前事务,如果是支持事务的数据库执行增删改后没有commit则数据库默认回滚,白操作了
rollback():取消当前事务
我们先创建一个员工表:
create table employees ( emp_no int not null auto_increment, emp_name varchar(16) not null, gender enum('M', 'F') not null, hire_date date not null, primary key (emp_no) );
其中,emp_no为员工id,为主键且唯一
emp_name为:员工的名字
fender为:性别,只有M和F两种选择
hire_date为:雇佣的时间。
为了试验的效果,我们插入几条数据:
insert into employees(emp_no, emp_name, gender, hire_date) values(0001, 'xiaozhang', 'M', '2017-11-20');insert into employees(emp_no, emp_name, gender, hire_date) values(0002, 'xiaowang', 'M', '2017-11-20');insert into employees(emp_no, emp_name, gender, hire_date) values(0003, 'xiaoli', 'M', '2017-11-01');mysql> select * from employees;+--------+-----------+--------+------------+| emp_no | emp_name | gender | hire_date |+--------+-----------+--------+------------+| 0001 | xiaozhang | M | 2017-11-20 || 0002 | xiaowang | M | 2017-11-20 || 0003 | xiaoli | M | 2017-11-20 |+--------+-----------+--------+------------+e)rows in set (0.00 sec)
2.游标
我们通过python代码增加一条数据到数据库中,代码如下:
import MySQLdb#conn=MySQLdb.connect(host="192.168.1.204",user="root",passwd="123456",db="python",charset="utf-8")def connect_mysql(): db_config = { 'host': '192.168.1.110', 'port': 3306, 'user': 'root', 'passwd': '123456', 'db': 'python', 'charset': 'utf8' } try: cnx = MySQLdb.connect(**db_config) except Exception as e: raise e return cnxif __name__ =='__main__':#定义sql语句 sql = '''create table test(id int not null);insert into test(id) values(100);''' cnx=connect_mysql()#定义游标 cus=cnx.cursor() try:#执行sql cus.execute(sql)#关闭游标 cus.close()#提交sql语句 cnx.commit() except Exception as e:#回滚 cnx.rollback() print('Error')# raise e finally: cnx.close()返回结果:
mysql> select * from test;+-----+| id |+-----+| 100 |+-----+1 row in set (0.00 sec)
- MYSQL数据操作
- mysql操作文本数据
- mysql 表数据操作
- MySQL数据操作
- Java_jdbc_操作mysql数据
- mysql数据操作命令
- mysql数据常用操作
- MySql数据分区操作
- mysql hive操作数据
- MYSQL数据操作表
- mysql-数据更新操作
- MySQL数据CURD操作
- MySQL数据库数据操作
- mysql操作重复数据
- mysql 数据分区操作
- MySQL之数据操作
- C#mysql数据操作
- Mysql数据操作介绍
- 20171120WindowsPrj09_01Socket
- IDEA中Git的更新、提交、还原方法
- codeforces 894 A题 QAQ -mystical_curve
- WKWebView遇上UIScrollView,动态获取WKWebView的高度
- Python基础入门之函数二
- mysql 操作数据
- 数列求和-加强版(20 分) 给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=
- Spring 源码解析之HandlerAdapter源码解析(三)
- java 单列集合list及其子实现类
- @SessionAttributes(value="user")
- c++ 抽象基类、虚函数、纯虚函数 java抽象类、接口、android生命周期方法异同
- c++中函数前加~
- mysql explain执行计划详解
- 2016-nature-Natural speech reveals the semantic maps that tile human cerebral cortex