Python sqlalchemy时间戳及密码管理实现代码详解
作者:viewts 时间:2021-05-06 10:43:35
一、时间戳
实际开发中,我们一般希望create_time和update_time这两个属性能自动设置,所以在建表的时候需要在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())
关于datetime转时间戳的方法,例如‘2020-07-09 14:15:31'(从数据库读取一般为字符串),首先需要将它转换成timetuple:
import time
timetuple = time.strptime('2020-07-09 14:15:31', '%Y-%m-%d %H:%M:%S')
如果你拿到的是datetime对象,那么更简单:
now = datetime.datetime.now()
timetuple = now.timetuple()
然后将timetuple转化为时间戳:
timestamp = int(time.mktime(timetuple))
那么,时间戳又要如何转回datetime呢?方法如下:
last_time = datetime.datetime.fromtimestamp(timestamp)
二、密码管理
在数据库中一般不要明文存储密码,可以用散列值替换,修改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设置成只写,使用verify_password来校验密码。
来源:https://www.cnblogs.com/viewts/p/13273470.html
标签:Python,sqlalchemy,时间,戳,密码
0
投稿
猜你喜欢
Python中assert函数的使用(含源代码)
2022-07-18 19:46:49
浅谈Pandas dataframe数据处理方法的速度比较
2023-04-17 06:38:39
python用opencv批量截取图像指定区域的方法
2021-10-14 09:07:33
Python 将 QQ 好友头像生成祝福语的实现代码
2022-01-11 20:29:33
element使用自定义icon图标的两种解决方式
2023-07-02 16:55:05
SQL语句优化提高数据库性能
2024-01-29 03:40:08
python3启动web服务引发的一系列问题汇总
2022-10-31 09:11:58
关于Theano和Tensorflow多GPU使用问题
2023-10-10 13:58:59
Python操作MySQL MongoDB Oracle三大数据库深入对比
2024-01-13 21:48:00
图文教程mssqlserver数据库导出到另外一个数据库的方法
2024-01-24 20:33:54
Python遍历zip文件输出名称时出现乱码问题的解决方法
2022-04-04 15:40:20
js实时获得服务器上时间
2008-11-25 13:55:00
Python对象与引用的介绍
2023-04-30 12:51:59
Python抓取移动App数据使用mitmweb监听请求与响应
2022-03-24 21:09:29
Python实现基于C/S架构的聊天室功能详解
2022-06-14 11:43:38
8个js表单验证函数
2007-10-28 19:19:00
MYSQL每隔10分钟进行分组统计的实现方法
2024-01-22 13:56:42
MySQL创建新用户、增加账户的2种方法及使用实例
2024-01-14 12:54:55
编程经验点滴 动态SQL的拼接技巧
2024-01-23 22:04:35
go语言代码生成器code generator使用示例介绍
2024-05-21 10:19:29