flask模型学习笔记

文章介绍了如何在Flask应用中集成SQLAlchemy和Flask-Migrate进行数据库管理。首先通过pip安装所需库,然后在exts.py和init.py中配置数据库连接和初始化扩展。接着在models.py中定义数据表模型,包括各种字段类型和约束。使用Flask-Migrate进行模型迁移,包括初始化、生成迁移、升级和降级操作。最后,展示了添加、删除、查询和更新数据的基本方法。
摘要由CSDN通过智能技术生成

插件

pip install flask-sqlalchemy
pip install flask-migrate   
pip install pymysql      

绑定

exts.py

from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

db = SQLAlchemy()
migrate = Migrate()


def init_exts(app):
    db.init_app(app=app)
    migrate.init_app(app=app, db=db)

init.py

    db_uri = 'sqlite:///sqlite3.db'
    app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    
    init_exts(app=app)

定义表

models.py


    # 按以下格式定义字段和约束

    # 字段类型
    #  Integer	int	普通整数, 一般是 32 位
    # SmallInteger	int	取值范围小的整数,一般是 16 位
    # BigInteger	int 或 long	不限制精度的整数
    # Float	float	浮点数
    # Numeric	decimal.Decimal	定点数
    # String	str	变长字符串
    # Text	str	长字符串,对较长或不限长度的字符串做了优化
    # Unicode	unicode	变长 Unicode 字符串
    # UnicodeText	unicode	变长 Unicode 字符串,对较长或不限长度的字符串做了优化
    # Boolean	bool	布尔值
    # Date	datetime.date	日期
    # Time	datetime.time	时间
    # DateTime	datetime.datetime	日期和时间
    # Interval	datetime.timedelta	时间间隔
    # LargeBinary	str	二进制文件

        
    # 常用约束
    # 	  primary_key
    #     autoincrement
    #     unique
    #     default
    #     index

from .exts import db

class User(db.Model):   #必须继承db.Model


    __tablename__ = 'tb_users'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(30), unique=True, index=True)
    age = db.Column(db.Integer, default=18)
    sex = db.Column(db.Boolean, default=True)
    salary = db.Column(db.Float, default=3000, nullable=False)

模型迁移

flask db init  #初始化,只在项目最开始调用一次
flask db migrate    #生成迁移文件
flask db upgrade    #执行迁移文件中的升级
flask db downgrade      #执行迁移文件中的降级

增删改查

# 增
        u = User()
        u.name = name
        u.age = age
        db.session.add(u)
        db.session.commit()

# 删
        db.session.delete(u)
        db.session.commit()

# 查
        User.query.all()#返回所有
        User.query.get(key)#返回主键对象
        User.query.filter(condition)#返回满足条件的查询集合,可以继续查询
# 改
        #对查到的对象直接修改属性即可
        

嗯,就这些了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星眺北海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值