項目遇到的小問題2
MD5算法(摘要算法、哈希算法)
1.MD5算法特點
壓縮性:任意長度的數據,算出的MD5值長度都是固定的
容易計算:從原數據計算出MD5值很容易
抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別
弱抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的
強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD5值,是非常困難的
2.MD5算法優點
方便存儲:MD5加密出來都是32位的字符串,能夠給定固定大小的空間存儲,傳輸,驗證
文件加密:MD5運用在文件加密上很有優勢,因為只需要32位字符串就能對一個巨大的文件進行驗證完整性
不可逆:MD5加密出來只會截取末尾32位,具有良好的安全性,如果是對於參數加密很難偽造MD5
加密損耗低:MD5加密對於性能的消耗微乎其微
3.運用場景
用戶密碼,請求參數,文件校驗
4.原理
MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值
使用sqlalchemy創建數據表時,出現 Access denied for user ‘root‘@‘localhost‘
出現這種情況最簡單的解決辦法是:卸載重裝mysql,一定要清理幹凈
刪除mysql:sudo apt-get remove mysql-*
清理殘留數據:dpkg -l |grep ^rc|awk ‘{print $2}‘ |sudo xargs dpkg -P(出現對話框選擇yes)
完美解決sublime不能輸入中文的問題
sudo apt-get update && sudo apt-get upgrade
git clone https://github.com/lyfeyaj/sublime-text-imfix.git
cd sublime-text-imfix
./sublime-imfix
sqlite插入數據
from flasker.models import Student
from . import db
@app.route(‘/‘, methods=[‘GET‘, ‘POST‘])
def home():
xaioming = Student(score=35)
db.session.add(xiaoming)
db.session.commit()
return "home"
sqlite查詢數據
ret = Student.query.all()
flask_script
作用:提供命令行與flask的交互功能
from flask_script import Manager
app = create_app()
manager = Manager(app)
@manager.command
def hello():
print(‘hello‘)
進入虛擬環境,執行:python manage.py shell
from manage import hello
hello()
有一個relationship時,使用backref=‘‘
有兩個relationship時,使用back_populates=‘‘,兩個relationship中都要寫對方的名字,以後查找數據就可以直接.對方的名字
一對多惰性查詢
在relationship中添加lazy=‘dynamic‘
數據遷移(db.create_all()只能創建數據表,要是數據表中有數據改動要使用數據遷移)
新增加字段一定要添加nullable=True
from flask_migrate import Migrate, MigrateCommand
# Migrate:完成app的擴展
# MigrateCommand:支持flask_script擴展,去操作數據庫遷移
migrate = Migrate(app, db) # 需要把數據庫傳遞進去
manage.add_command(‘db‘, MigrateCommand) # 添加命令
sqlite不支持刪除列,只支持改表名和增加列
在命令行執行
python manage.py db init # init:為你的應用程序初始化migration,會自動生成一個migrations文件夾
python manage.py db migrate
# 會生成一個versions遷移文件
1.檢測表的增加和刪除
2.檢測列的增加和刪除
3.列的nullable屬性的變更
4.檢測基本索引的變更或者unique約束的變更
5.檢測外鍵約束的變更
python manage.py db upgrade # 執行遷移
項目遇到的小問題2