由于最近项目需要对一些比较敏感信息,比如账号信息,不能明文提供用户,需要加密处理,然后使用的时候再由封装好的程序去解密。

 

1. AES算法简介

    AES算法详解:高级加密标准,它是一种对称加密算法,AES只有一个密钥,这个密钥既用来加密,也用于解密。

AES加密方式有五种:ECB, CBC, CTR, CFB, OFB。
从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现。
CBC 和ECB模式的区别就是:

  • CBC加密需要一个十六位的key(密钥)和一个十六位iv(偏移量)
  • ECB加密不需要iv,只需要key(密钥)

 

2.模块安装

在 Windows下使用AES时要安装的是pycryptodome 模块 …

在四月份刚接触Peewee的时候,写过一篇Peewee 使用。而后,在使用的过程中,发现很多常用的内容需要搜索查阅,今天就在这里整理一下。

一、插入数据

插入数据,我们可以实例化一个Model,然后再使用save()的方法插入到数据库中。如下:

# 插入一条数据
p = Person(name='liuchungui', birthday=date(1990, 12, 20), is_relative=True)
p.save() …

最近,需要同步数据到Mysql中,数据量有几百万。但是,自己写一个for循环,然后使用Model.create()添加,发现这种方式特别慢。难道,像去年爬数据一样,将几百万的数据从Redis取出来,然后使用多线程进行保存?

在Google上搜索了之后,找到一种更简单的方式,那就是使用Peewee原生的方法insert_many(),进行批量数据插入。

那么,它的速度有多快?

下面,是我简单的比较了插入10000条数据到本地数据库中,四种方式所需要的时间。

1、使用循环和Model.create()

代码如下:

from xModels import XUser, database
import time

NUM = 10000 …

上周学习了下基本的Peewee使用,知道了基本的增删改查和建数据库。不过,在项目中同步数据的时候,需要用到事务,于是赶紧补充了官方的Transactions,然后写个总结。

常用方法

Peewee实现事务最常用的方法是Database.atomic()方法,非常简单,代码示例如下:

 

from xModels import XUser, database

with database.atomic() as transaction: …

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

import numpy …