util_db.py
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
HOST = "localhost"
PORT = 3306
DATA_BASE = 'flask_db'
USER = 'root'
PWD = 'root'
DB_URI = f"mysql+pymysql://{USER}:{PWD}@{HOST}:{PORT}/{DATA_BASE}"
engine = create_engine(DB_URI)
Base = declarative_base(engine)
Session = sessionmaker(engine)
列参数的使用.py
from datetime import date, datetime
from email.policy import default
from turtle import title, update
from sqlalchemy import Column, Integer, DateTime, String
from util_db import Base,Session
class News(Base):
__tablename__ = 't_news2'
# 类型 主键 自增长
id = Column(Integer, primary_key = True, autoincrement = True)
# 唯一值
phone = Column(String(11), unique=True)
# 指定字段不可以为空False
title = Column(String(32), nullable = False)
# 设置默认值
read_count = Column(Integer, default = 1)
# 日期格式 默认值设置成当前日期,并且不加括号(否则就只执行一次)
create_time = Column(DateTime, default = datetime.now)
#
update_time = Column(DateTime, default = datetime.now, onupdate = datetime.now)
def create_data():
new1 = News(phone="18124500032",title="测试列参数的使用")
with Session() as session:
session.add(new1)
session.commit()
def update_data():
with Session() as session:
new1 = session.query(News).first()
new1.read_count = 2# 同时会更新到update_time,因为他设置了onupdate参数
session.commit()
if __name__ == "__main__":
# 创建新表
# Base.metadata.create_all()
# create_data()
update_data()