正奥网

数据库基础教程 如何优雅的操作数据库

日期:2019-09-07 来源:数据库基础教程 评论:

[摘要]今天要介绍的这个python第三方库非常厉害,完美操作各种数据库。名字叫records,在网上很少有这个库的相关资料,但是在开源社区可是很火热的哦。如果这还不能打消你的顾虑,再告诉你一件事:如果你用python编程,你一定听过request...……

今天要介绍的这个python第三方库非常厉害,完美操作各种数据库。

名字叫records,在网上很少有这个库的相关资料,但是在开源社区可是很火热的哦。

如果这还不能打消你的顾虑,再告诉你一件事:如果你用python编程,你一定听过requests,这两个库是同一个作者写的。

01、快速使用

使用步骤:

1、连接数据库,返回db数据库对象

2、db对象执行sql语句

获取数据库的格式是标准的URL格式。

如果使用的不是mysql数据库,只需要换掉数据库类型就可以了:

02、创建表

03、插入单条数据

records支持使用 :variable定义变量,通过参数传入完成动态传值,在需要动态加载数据的时候非常有用:

04、插入多条数据

sql语句在执行多条数据操作的时候非常不方便,尤其是当值还是变化的时候。

records提供的bulk_query方法能快捷的插入和更新多条数据:

05、数据查询

查询到数据以后,可以通过all()方法获取所有的记录,支持3种类型。

◆ 默认是自己封装的RecordCollection对象

◆ 也可以通过as_dict=True参数转成字典形式

◆ 可以通过as_ordereddict=True转成排序字典形式

06、简洁的数据库事务支持

数据库事务是经常需要使用到的数据库操作,他通常是为了保持数据原子性和一致性。

比如一个转账的数据库操作:

1、从yuze账号中读取余额

数据库基础教程 如何优雅的操作数据库

即使是修改一条记录一个字段的几个字节,整个块(8K大小)都会是脏块。随着业务持续写入,大量脏块会消耗数据库内存。所以ORACLE会有多重机制刷脏块到磁盘数据文件上。在事务日志切换的时候也会触发刷脏块操作。如果业务压力测试ORACLE,大量的写导致事务日志切换很频繁,对应的刷脏操作可能相对慢了,就会阻塞日志切换,也就阻塞了业务写入。这就是ORACLE的特点。解决办法就是加大事务日志文件,增加事务日志成员或者用更快的磁盘存放事务日志和数据文件。

理论:前一个阶段的需求在这个阶段应该抽象为信息世界的结构,来充分反映现实世界事物之间的联系。用像E-R图这种工具表示。

首先,要说明一些数据类型,接下来对表的操作语句语法中会用到

因此,在实际开发中,尤其是并发插入较多的应用;我们要尽量优化业务逻辑,尽量使用相等条件来访问更新数据,避免使用范围条件。

想要长时间保存数据只能是把数据存储到硬盘上,当我们下次启动的时候,在把数据读取上来

上面是废话,说的现实一点应该是,只有事务中所有的操作都成功,事务才会提交。如果某个失败,则必须要会退到事务执行之前的状态,执行成功的SQL需要被撤销。

INSERT  UPDATE  DELETE

揭秘OceanBase的弹性伸缩和负载均衡原理

LOCK_GAP(间隙锁,只锁住索引记录之间或者第一条索引记录前或者最后一条索引记录之后的范围,并不锁住记录本身)

2、对yuze账号余额减去转账-400

3、从chaoge账号中把余额读出来

4、对chaoge账号做加法操作(+400)

我们必须保证这4步同时执行成功,要么同时都不成功。

如果前2步已经执行成功,但是到第3步发生了错误导致后面都不能执行,就会出现问题:

yuze的账号被扣了钱,但是chaoge的账号却没有加钱。

通过数据库事务就能避免这种情况。

07、数据导出为json

数据库数据得到以后还需要进一步的操作,比如保存起来。

08、数据导出到Excel文件

最常用的是如果需要各种各样的报表,需要放到excel文件中保存起来。

导出的数据效果:

09、总结

◆ records支持多种不同的数据库;

◆ records的方法非常简单和统一,不像pymysql还需要记住如游标对象这样的底层信息;

◆ 自动实现上下文管理器,不需要关注链接状态;

◆ 支持 :variable方言,以安全的形式进行动态参数传递,防止sql语句不规范导致的安全问题;

◆ 支持数据库事务,保持数据的原子性和一致性;

◆ 轻松导出为json, yaml, xls, xlsx, pandas, html等多种数据格式。

◆ 源码非常简单,你一定看得懂。

本文由柠檬班雨泽老师原创,转载需注明出处!

学数据库从哪里入门 大数据入门到精通该怎么学

MySQL:开源免费的数据库,小型的数据库,已经被Oracle收购了。MySQL6.x版本也开始收费。后来Sun公司收购了MySQL,而Sun公司又被Oracle收购

INSERT INTO oderlist_new(goodsName,quantity,item_price,orderNo,userId,userName,orderTime,supplierId)select o.`goodsName` , o.`quantity` , o.`item_price` , o.`orderNo` , o.`userId` , o.`userName` , o.`orderTime` , (select id from supplier_new where `supplier` = o.supplier and `supplierAddress` = o.supplierAddress and `supplierTel` = o.supplierTel and `supplierEmail` = o.supplierEmail and `supplierContact`= o.supplierContact ) as `supplierId`from oderlist o

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

这就是OB读写的特点,解决方法就是加大OB内存、或者允许OB自动对业务写入速度限流。

(表级意向共享锁,表级意向排他锁,行共享锁,行排他锁)

sysbench的机制是压测过程中如果有错误就会报错退出,所以需要针对一些常见的错误进行忽略处理,这样sysbench会话可以重试继续运行。比如说主键或者唯一键冲突、事务被杀等等。

实际:我们学生去图书馆借书的时候,基本事件首先有学生,图书馆会有很多书,借书这个行为通过学生和书之间发生联系。

10.不是嵌入式操作系统的特点(    )。

您至少需要输入5个字

相关内容

编辑精选

copyright © 2017 https://www.zabeng.com 正奥网 版权所有