上一讲,他们自学了 flask 圣夫龙与session的采用 ,已经确切了前台使用者与否登入的推论及校正 url 正当性的方式 。

责任编辑他们传授资料库的校订改查操作方式 , 每一个应用领域控制系统都有赖于统计数据的可视化 , 资料库的操作方式是要掌控的专业技能 。flask 中采用 flask-sqlalchemy 操作方式资料库将极难 ,他们一同自学呵呵 。

flask-sqlalchemy 是甚么?他有甚么特征 ?

flask-sqlalchemy 是两套 flask 的资料库操作方式架构 。

他的特征是:能加速的顺利完成资料库的校订改查操作方式 , 同时还具有的巨集查阅的机能 ,他们不须要写具体内容资料库 sql 句子可顺利完成不同的资料库操作方式 。

怎样一步棋一步棋顺利完成资料库校订改查操作方式呢 ?

1、 建立资料库实用性文档,在app.py 同价位产品目录下建立 config.py , 一般来说他们将资料库的实用性写到原则上的文档 , 方便快捷资料库实用性的修正 。这儿他们采用的是 mysql ,每带队实用性的促进作用,我均注解在标识符前面,实用性如下表所示:

encoding: utf-8 dialect+driver://username:password@host:port/database DIALECT = mysql 会用是甚么资料库,我采用的是 mysql DRIVER = pymysql 相连资料库驱动力,pymysql 是 mysql 的驱动力 USERNAME = root 帐号 ,你的资料库帐号 PASSWORD = Wjie2018 公钥 ,你的资料库公钥 HOST = 127.0.0.1 伺服器 ,资料库所处伺服器的ip,邻近地区即 127.0.0.1 PORT = 3306 路由器 ,资料库的预设路由器 3306 DATABASE = ideamerry_repair_v3 资料库名 ,你须要镜像的具体内容资料库的英文名字 ,这儿是维保资料库的英文名字 SQLALCHEMY_DATABASE_URI = “{}+{}://{}:{}@{}:{}/{}?charset=utf8”.format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE) 堆叠成资料库的 URI ,一般不须要修正 SQLALCHEMY_TRACK_MODIFICATIONS = False 用作跟踪资料库修正 , 预设为True ,增设为 True 会减少缓存耗用

2、建立资料库 db第一类:在app.py 同价位产品目录下建立 exts.py文档。 采用 exts.py 的目地是方便快捷在其他文档中采用 db 第一类做统计数据操作方式。

import os from flask_sqlalchemy import SQLAlchemy 这时先不传至app db = SQLAlchemy()

3、调用资料库,他们在开启流程即:app.py 中导入exts.py 和config.py 接着继续执行资料库调用操作方式 。

上面首尾标识符促进作用是:导入两个文档

import config from exts import db

上面首尾标识符促进作用是:调用资料库

app.config.from_object(config) 加载资料库实用性文档 db.init_app(app) 绑定到他们到应用领域流程
注意:这首尾标识符比如放在有资料库操作方式的蓝图的上面 , 因为蓝图中要采用资料库操作方式,要先调用 ,如果将资料库操作方式的蓝图放在这首尾的上面,就是资料库为调用不能采用。蓝图是甚么?他们前面传授。上面这行就是注册一个蓝图 user ,因 user 中有资料库操作方式,所以上面这行这行要位于 资料库调用标识符的上面,切记!
注册user,采用前缀 user 作为前缀访问 app.register_blueprint(user, url_prefix=/user)

4、建立资料库表的model映射 ,以资料库中 user 表为例 。建立model.py 文档 , 遵循 MVC 思想,他们将建立models产品目录,接着在models产品目录下建立 model.py 。

flaskmysql资料库校订改查(QQ维保小流程源代码传授四)插图

model 中为了映射资料库字段 ,首先要导入资料库 ,从之前他们建立好的exts中导入 db

from exts import db

接着建立使用者模型

使用者模型 class User(db.Model): tableName = user id = db.Column(db.INTEGER, primary_key=True, autoincrement=True) userName = db.Column(db.String(30), nullable=False) userPassword = db.Column(db.String(30), nullable=False) openid = db.Column(name=openid, nullable=False)

详细解释上面标识符:行表示建立 class 的英文名字是 User ,参数是资料库model

class User(db.Model):

第二行是统计数据表的英文名字,预设情况下 User 类对应资料库中的 user表 ,即将大写字母转换为小写字母的表明。

多个大写字母的 class 类预设会映射统计数据的表是甚么呢 ? 比如 class 的英文名字是 RepairServiceSheet ,他预设映射的资料库表则是资料库中的 :repair_service_sheet 表。

若不想采用预设的映射呢 ?他们可以覆盖预设的映射 ,采用tablename来覆盖即可 ,如:你的 User 类要对应资料库中的 sys_user 表,则采用呵呵标识符 :

class User(db.Model): __tableName__ = sys_user

第三行及以下是具体内容字段的映射

class 类的 id 映射资料库表 user 的 id 字段,并且是主键自增长 ,primary_key=True, autoincrement=True

id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)

class 类的 userName 映射统计数据表的 userName 字段 , 英文名字要一模一样,大小写一致 。

userName = db.Column(db.String(30), nullable=False)

或写为上面形式

userName = db.Column(name=userName, nullable=False)

如果你不想在 class User 里采用 userName 做为英文名字 ,则可写为上面形式 :

anyUserName = db.Column(name=userName, nullable=False)

5、校订改查操作方式,顺利完成了以上实用性 ,资料库操作方式非常简单了 ,上面依次看呵呵。(可参照源标识符的controllor/user/user.py中的标识符)

增:向使用者表添加一条统计数据

user = User(userName=admin, userPassword=123456) db.session.add(user) db.session.commit()

删:删除使用者表中的一条统计数据

resultUser = User.query.filter(User.id == 1).first() db.session.delete(resultUser) db.session.commit()

改:修正使用者表的一条统计数据 ,先查阅出须要修正的记录再做修正提交

dbUser = User.query.filter(User.id == 1).first() 先根据 id 查出资料库的一条统计数据 dbUser.userName=study2100 修正帐号admin 为 study2100 db.session.commit() 提交资料库

查:巨集查阅使用者表统计数据

users = User.query.paginate(1, per_page=10) 巨集查阅第一页统计数据,本页查阅10条 users = User.query.order_by(User.id.desc()).paginate(page, per_page=10) order_by 是排序,按照 id 倒叙排列查阅

总结:

flask 中资料库的操作方式并不复杂 , 只要他们按照这样的步骤去做 ,注意细节 ,校订改查操作方式可以很快的顺利完成 ,学会了资料库基本操作方式 , 无论是为小流程端提供 api 接口,还是前台管理机能能很顺利的顺利完成 。

如你有任何问题 ,请关注我个人公众号 JeenWang 并回复信息,我会为你解答 。祝你们心情愉快,天天进步。

作者 nasiapp

在线客服
官方客服
我们将24小时内回复。
12:01
您好,有任何疑问请与我们联系!

选择聊天工具: