Python sqlalchemy 타임 스탬프 및 암호 관리 구현 코드 상세 설명

타임 스탬프
실제 개발 중,우 리 는 일반적으로 createtime 과 updatetime 이 두 속성 은 자동 으로 설정 할 수 있 기 때문에 표를 만 들 때 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 사용 하기패스워드 로 비밀 번 호 를 검사 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기