看啥推荐读物
专栏名称: GHope
比起鲜衣怒马的牵黄擎苍啊,我还是更喜欢白衣策马的仗剑天涯。
今天看啥  ›  专栏  ›  GHope

models(模型)

GHope  · 简书  ·  · 2018-10-14 12:02

Flask模型

Flask默认并没有提供任何数据库操作的API。

我们可以选择任何适合自己项目的数据库来使用。

Flask中可以自己的选择数据,用原生语句实现功能,也可以选择ORM(SQLAlchemy,MongoEngine)。

SQLAlchemy是一个很强大的关系型数据库框架,支持多种数据库后台。SQLAlchemy提供了高层ORM,也提供了使用数据库原生SQL的低层功能。

ORM:

将对对象的操作转换为原生SQL
优点
    易用性,可以有效减少重复SQL
    性能损耗少
    设计灵活,可以轻松实现复杂查询
    移植性好

针对于Flask的支持,官网地址

pip install flask-sqlalchemy

安装驱动

pip install pymysql

初始化SQLALchemy

from flask_sqlalchemy import SQLALchemy

app = Flask(__name__)
db = SQLAlchemy(app)

数据库的设置

# dialect + driver://username:password@host:port/database
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@127.0.0.1:3306/flask'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

定义模型

创建models.py文件,其中定义模型

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    # 如果不写tablename参数,数据库中的表明为user(类名的小写)
    __tablename__ = 'user'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(10),unique=True,nullable=False)
    password = db.Column(db.String(128),nullable=False)

其中:
Integer表示创建的s_id字段的类型为整形,
primary_key表示是否为主键
String表示该字段为字符串
unique表示该字段唯一
default表示默认值
autoincrement表示是否自增

创建数据表

在视图函数中我们引入models.py中定义的db

from user.models import db, User

@user_blueprint.route('/create_db/')
def create_db():
    db.create_all()
    return '创建表成功'

其中: db.create_all()表示创建定义模型中对应到数据库中的表




原文地址:访问原文地址
快照地址: 访问文章快照