Flask数据库_Column的常用参数与使用
一.参数介绍
-
primary_key:True设置某个字段为主键。
-
autoincrement:True设置这个字段为自动增长的。
-
default:设置某个字段的默认值。在发表时间这些字段上面经 常用。
-
nullable:指定某个字段是否为空。默认值是True,就是可以为 空。
-
unique:指定某个字段的值是否唯一。默认是False。
-
onupdate:在数据更新的时候会调用这个参数指定的值或者函 数。在第一次插入这条数据的时候,不会用onupdate的值,只 会使用default的值。常用于是 update_time 字段(每次更新数据的 时候都要更新该字段值)。
-
name:指定ORM模型中某个属性映射到表中的字段名。如果不 指定,那么会使用这个属性的名字来作为字段名。如果指定了, 就会使用指定的这个值作为表字段名。这个参数也可以当作位置 参数,在第1个参数来指定。
二.实例
db_utils.py:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
USER = 'xx'
PWD = 'xx'
HOST = '127.0.0.1'
PORT = 3306
DATA_BASE = 'flask_db'
DB_URL = f'mysql+pymysql://{USER}:{PWD}@{HOST}:{PORT}/{DATA_BASE}'
engine = create_engine(DB_URL)
Base = declarative_base(engine)
Session = sessionmaker(engine)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
main.py:
from db_utils import Base,Session
from sqlalchemy import Column,Integer,String,Date,DateTime
from datetime import datetime
class News(Base):
__tablename__ = 't_news2'
id = Column(Integer,primary_key=True,autoincrement=True)
phone = Column(String(11),unique=True)
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 add_data():
news = News(phone='12345678912',title='测试数据')
with Session() as session:
session.add(news)
session.commit()
def add_data2():
news = News(phone='12345678918',title='hhh')
with Session() as session:
session.add(news)
session.commit()
def update_time():
with Session() as session:
n = session.query(News).first()
n.read_count = 2
session.commit()
if __name__ == '__main__':
update_time()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
总结:用一个db_utils工具文件来连接数据库,让重复繁琐的代码变得简洁易用!