• Flask数据库_Column的常用参数与使用


    Flask数据库_Column的常用参数与使用

    一.参数介绍

    • primary_key:True设置某个字段为主键。
    • autoincrement:True设置这个字段为自动增长的。
    • default:设置某个字段的默认值。在发表时间这些字段上面经 常用。
    • nullable:指定某个字段是否为空。默认值是True,就是可以为 空。
    • unique:指定某个字段的值是否唯一。默认是False。
    • onupdate:在数据更新的时候会调用这个参数指定的值或者函 数。在第一次插入这条数据的时候,不会用onupdate的值,只 会使用default的值。常用于是 update_time 字段(每次更新数据的 时候都要更新该字段值)。
    • name:指定ORM模型中某个属性映射到表中的字段名。如果不 指定,那么会使用这个属性的名字来作为字段名。如果指定了, 就会使用指定的这个值作为表字段名。这个参数也可以当作位置 参数,在第1个参数来指定。

    二.实例

    db_utils.py:
    #coding=utf-8
    
    
    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()
    
    # 测试column参数的作用
    def add_data2():
        # news = News(phone='12345678912',title='测试数据')   #phone数据要不同
        # news = News(phone='12345678918')        #title不能为空
        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__':
        # Base.metadata.create_all()
        # add_data()
        # add_data2()
        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工具文件来连接数据库,让重复繁琐的代码变得简洁易用!
  • 相关阅读:
    Linux性能优化--性能工具-系统CPU
    Cisco简单配置(八)—动态中继协议DTP
    Git绑定远程仓库报错error: remote origin already exists.
    Git配置(Mac版本)
    Zstack一面面经
    论文阅读——ViTAE
    WINDOWS+PHP+Mysql+Apache环境中部署SQLi-Labs、XSS-Labs、UPload-Labs、DVWA、pikachu等靶场环境
    立方尾不变:(BigInteger、multiply、toString()、endsWith()、String.valueOf())
    绝对路径与相对路径
    Java(八)----多线程
  • 原文地址:https://blog.csdn.net/qq_55961861/article/details/126837191