Flask-模型

2019-05-08  本文已影响0人  遇明不散

模型

什么是模型

模型是根据数据库中表的结构来创建出来的class。每一张表到编程语言中就是一个class,表中的每一个列,到编程语言中就是class中的一个属性。

创建和使用模型
什么是ORM
ORM的三大特征
ORM的优点
定义模型
数据库和框架的配置
pip3 install sqlalchemy
pip3 install flask-sqlalchemy
create database flask default charset utf8 collate utf8_general_ci;
from flask_sqlalchmey import SQLAlchemy
app = Flask(__name__)

# 连接数据库
# app.config['SQLALCHEMY_DATABASE_URI']='mysql://username:pwd@host:port/dbname'
app.config['SQLALCHEMY_DATABASE_URI']='mysql:/root:123456@localhost:3306/flask'

# 指定让SQLAlchemy自动追踪程序的修改
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

# 指定执行完操作后自动提交
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

# 创建SQLAlchemy的实例
# db是SQLAlchemy的实例,表示程序正在使用的数据库,同时也获得了SQLAlchemy中的所有功能
db = SQLAlchemy(app)

if __name__ == "__main__":
    app.run(debug=True)
定义模型

模型:数据库中的表在编程语言中的体现,其本质就是一个Python 的类(可称为:模型类或实体类)。类中的属性要与数据库表中的列相对应。

class MODELNAME(db.Model):
    __tablename__ = "TABLENAME"
    COLUMN_NAME = db.Column(db.TYPE,OPTIONS)

# MODELNAME:定义模型类名称,根据表名设定
# TABLENAME:映射到数据库中表的名字
# COLUMN_NAME:属性名,映射到表中列的名字
# db.TYPE:映射到列的数据类型
# OPTIONS:列选项
# 类型名         python类型          说明
# Integer        int                普通整数,32位
# SamllInteger   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  日期和时间
# 选项名            说明
# primary_key      设置为True则表示该列为主键
# unique           设置为True则表示该列的值唯一
# index            设置为True则表示该列要创建索引
# nullable         设置为True则表示该列允许为空
# default          为该列定义默认值
db.create_all()

数据库操作

插入
# Models为模型类实例
db.session.add(Models)
db.session.commit()
查询
基于 db.session 进行查询
# 该函数会返回一个Query对象,类型为 BaseQuery,包含了指定实体类对应的表中所有的数据
# 该函数也可以接受多个参数,参数表示的是要查询哪个实体
db.session.query()
db.session.query(...).查询执行函数()

# 以列表的方式返回查询的所有结果
db.session.query(...).all()
  
# 返回查询中的第一个结果,如果没有结果,则返回None
db.session.query(...).first()      

# 返回查询中的第一个结果,如果没有结果,则终止并返回404
db.session.query(...).first_or_404()  

# 返回查询结果的数量
db.session.query(...).count()      
基于 Models进行查询
Models.query.查询过滤器(条件参数).查询执行函数()
删除和修改
删除
# 查询出要删除的实体
user = db.session.query(Users).filter_by(id=5).first()
# 根据所提供的删除方法将信息删除
db.session.delete(user)
修改
# 将 id 为1 的用户的 username 改为 Jason Wang ,年龄改为 18
# 查
user = Users.query.filter_by(id=1).first()

# 改
user.username = "Jason Wang"
user.age = 18

# 保存
db.session.add(user)
上一篇 下一篇

猜你喜欢

热点阅读