Python sqlalchemy時(shí)間戳及密碼管理實(shí)現(xiàn)代碼詳解
一、時(shí)間戳
實(shí)際開(kāi)發(fā)中,我們一般希望create_time和update_time這兩個(gè)屬性能自動(dòng)設(shè)置,所以在建表的時(shí)候需要在model上特殊處理一下:
from sqlalchemy.sql import func class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key = True) email = db.Column(db.String(128)) password_hash = db.Column(db.String(128)) create_time = db.Column(db.DateTime, server_default = func.now()) update_time = db.Column(db.DateTime, server_default = func.now(), onupdate = func.now())
關(guān)于datetime轉(zhuǎn)時(shí)間戳的方法,例如‘2020-07-09 14:15:31'(從數(shù)據(jù)庫(kù)讀取一般為字符串),首先需要將它轉(zhuǎn)換成timetuple:
import time
timetuple = time.strptime('2020-07-09 14:15:31', '%Y-%m-%d %H:%M:%S')
如果你拿到的是datetime對(duì)象,那么更簡(jiǎn)單:
now = datetime.datetime.now()
timetuple = now.timetuple()
然后將timetuple轉(zhuǎn)化為時(shí)間戳:
timestamp = int(time.mktime(timetuple))
那么,時(shí)間戳又要如何轉(zhuǎn)回datetime呢?方法如下:
last_time = datetime.datetime.fromtimestamp(timestamp)
二、密碼管理
在數(shù)據(jù)庫(kù)中一般不要明文存儲(chǔ)密碼,可以用散列值替換,修改model:
from sqlalchemy.sql import func from werkzeug.security import generate_password_hash, check_password_hash class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key = True) email = db.Column(db.String(128)) password_hash = db.Column(db.String(128)) create_time = db.Column(db.DateTime, server_default = func.now()) update_time = db.Column(db.DateTime, server_default = func.now(), onupdate = func.now()) @property def password(self): raise AttributeError('password is not a readable attribute') @password.setter def password(self, password): self.password_hash = generate_password_hash(password) def verify_password(self, password): return check_password_hash(self.password_hash, password)
將password設(shè)置成只寫(xiě),使用verify_password來(lái)校驗(yàn)密碼。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
介紹一款python類(lèi)型檢查工具pyright(推薦)
這篇文章主要介紹了介紹一款python類(lèi)型檢查工具pyright(推薦),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python函數(shù)調(diào)用追蹤實(shí)現(xiàn)代碼
這篇文章主要介紹了Python函數(shù)調(diào)用追蹤實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11基于Python實(shí)現(xiàn)萬(wàn)年歷制作
制作一個(gè)萬(wàn)年歷是一個(gè)有趣的Python項(xiàng)目,它可以讓您查看任何年份的日歷并獲得特定日期的信息,下面我們就來(lái)看看具體是如何使用Python實(shí)現(xiàn)的吧2023-12-12解決pandas展示數(shù)據(jù)輸出時(shí)列名不能對(duì)齊的問(wèn)題
今天小編就為大家分享一篇解決pandas展示數(shù)據(jù)輸出時(shí)列名不能對(duì)齊的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11tkinter如何實(shí)現(xiàn)打開(kāi)文件對(duì)話框并獲取文件絕對(duì)路徑
這篇文章主要介紹了tkinter實(shí)現(xiàn)打開(kāi)文件對(duì)話框并獲取文件絕對(duì)路徑問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Python+fuzzywuzzy計(jì)算兩個(gè)字符串之間的相似度
fuzzywuzzy?可以計(jì)算兩個(gè)字符串之間的相似度,它依據(jù)?Levenshtein?Distance?算法來(lái)進(jìn)行計(jì)算,該算法又叫?Edit?Distance?算法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-09-09python ftp 按目錄結(jié)構(gòu)上傳下載的實(shí)現(xiàn)代碼
這篇文章主要介紹了python ftp 按目錄結(jié)構(gòu)上傳下載的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-09-09python實(shí)現(xiàn)簡(jiǎn)易云音樂(lè)播放器
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)易云音樂(lè)播放器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01