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()表示创建定义模型中对应到数据库中的表