SQLAlchemy學(xué)習(xí)-7.Column 設(shè)置日期時(shí)間類型
前言
在表里面一般會(huì)設(shè)置創(chuàng)建時(shí)間和更新時(shí)間,創(chuàng)建時(shí)間是數(shù)據(jù)寫入時(shí)候的時(shí)間,更新時(shí)間是表的數(shù)據(jù)有更新,自動(dòng)獲取當(dāng)前時(shí)間。
onupdate 是在更新時(shí)執(zhí)行該方法,一般用在更新時(shí)間字段上。
DateTime 日期時(shí)間
Column 字段設(shè)置 DateTime 日期時(shí)間類型
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine, Column, Integer, String, DateTime, Date
from datetime import datetime
Base = declarative_base()
class User(Base):
? ?"""銀行卡基本信息"""
? ?__tablename__ = 'user' ?# 數(shù)據(jù)庫表名
? ?id = Column(Integer, primary_key=True, autoincrement=True)
? ?name = Column(String(10), nullable=False)
? ?birth = Column(Date) ?# 生日
? ?create_time = Column(DateTime, default=datetime.now)
? ?update_time = Column(DateTime, onupdate=datetime.now, default=datetime.now)
? ?def __repr__(self):
? ? ? ?return f"<User(id={self.id}, name={self.name}, " \
? ? ? ? ? ? ? f"tel={self.tel}, tel={self.age})>"
if __name__ == '__main__':
? ?DB_URI = 'mysql+pymysql://root:123456@localhost:3306/web'
? ?engine = create_engine(DB_URI)
? ?# Base.metadata.drop_all(engine) ?# 清空了重新創(chuàng)建
? ?Base.metadata.create_all(engine) ?# 將模型映射到數(shù)據(jù)庫中
執(zhí)行后,數(shù)據(jù)庫中表如下

添加數(shù)據(jù)
添加數(shù)據(jù)時(shí),create_time 和 update_time 會(huì)自動(dòng)獲取當(dāng)前時(shí)間
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from xuexi.a7 import User
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/web')
# 把當(dāng)前的引擎綁定給這個(gè)會(huì)話
Session = sessionmaker(bind=engine)
# 實(shí)例化
session = Session()
# 新增數(shù)據(jù)
obj = User(name='yoyo2', birth='2021-01-07')
session.add(obj) ?# 添加到session
session.commit() ?# 提交到數(shù)據(jù)庫
添加到數(shù)據(jù)庫中的數(shù)據(jù)

onupdate 更新時(shí)間
onupdate 是在更新時(shí)執(zhí)行該方法
session.query(User).filter(User.name == 'yoyo2').update({'birth': '2021-01-08'})
session.commit()
update_time 字段設(shè)置了?onupdate=datetime.now
,更新的時(shí)候會(huì)自動(dòng)獲取當(dāng)前時(shí)間

來源:https://www.dianjilingqu.com/433908.html