使用sqlalchemy建立携带加密字段的ORM表

####################first region#######################
from werkzeug.security import generate_password_hash,check_password_hash
pw1 = generate_password_hash('tony')
pw2 = generate_password_hash('tony')

print pw1
print pw2

print check_password_hash(pw1,'tony')
print check_password_hash(pw2,'tony')


####################second region####################


from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine,Column,Integer,String,Sequence
from sqlalchemy import and_,or_
from sqlalchemy.orm import sessionmaker

DB_URI = 'XXX-XXX-XXX'

eng = create_engine(DB_URI)
Base = declarative_base()

class User(Base):
__tablename__ = 'hash_users'
id = Column(Integer,primary_key=True)
name = Column(String(128),nullable=False)
_password = Column(String(256),nullable=False)

def __init__(self,name,password):
self.name = name
self._password = password

  #hybrid_property装饰器把password变成了一个混合属性,可以通过user.password属性来访问哈希的密码,也会在给user.password
  #赋值的时候触发password.setter

@hybrid_property
def password(self):
return self._password

@password.setter
def _set_password(self,plaintext):
self._password = generate_password_hash(plaintext)

def verify_password(self,password):
return check_password_hash(self._password,password)

转载于:https://www.cnblogs.com/575dsj/p/8213663.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值