flask向MySQL封装_Flask 入门系列教程03-数据库操作

本文是Flask入门系列教程的第三部分,主要讲解如何使用flask-sqlalchemy封装SQLAlchemy进行数据库操作。首先介绍了安装flask-sqlalchemy的步骤,接着配置项目连接到MySQL数据库。然后创建Model对象映射数据库表,展示如何获取、更新数据以及进行分页和联表查询。最后提到了后台分页和联表查询的实现方法。
摘要由CSDN通过智能技术生成

原标题:Flask 入门系列教程03-数据库操作

背景介绍

Web开发中,一个重要的应用就是数据库了。python使用最广泛的ORM框架是SQLAlchemy,它是一个很强大的关系型数据库框架,不仅支持高层ORM,也支持底层的SQL操作,另外,它也支持多种数据库引擎,例如mysql,sqlite等。在flask中,一般使用flask-sqlalchemy,它封装了SQLAlchemy框架,使操作数据库更加简单方便。下面就把flask-sqlalchemy加入到我们的代码中。

安装flask-sqlalchemy

045f8f8219f05e2492dae8960395fb87.png

pip install flask-sqlalchemy

配置项目连接的数据库

1e75b27430203cf3974619c1b7e19da6.png

在flask_test.py里面增加数据库配置的信息,并注册到app中。

app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://**:****@*.*.*.*:****/flask_test?charset=utf8&autocommit=true'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db = SQLAlchemy(app)

说明:Flask-sqlalchemy有很多的配置项,可以根据需要自行选择,地址如下:

http://www.pythondoc.com/flask-sqlalchemy/config.html

建立Model对象

901c0e3807d28b7fb296ace3b68ab18d.png

说明:

(1) 每个数据库表必须对应这里的一个类,且继承db.Model。

(2) __repr__方法是生成对象时,默认返回的对象内容。

(3) 列的类型是 Column 的第一个参数。你可以直接提供它们或进一步规定(比如提供一个长度)。下面的类型是最常用的:

f414ebba83c4abecaee88d9c0a32847d.png

获取列表数据

(1)数据获取的接口直接从数据库中取数据即可。

65ea5c2e5be072636f87b26001ebb86d.png

(2)html中使用模板将取到的数据,解析到html元素中。

7321c6a3358b896aa56107f17fb86d21.png

cd8f53fe0ebefec6484fd047d52e9b70.png

分页

如果元素特别多,一般需要分页。这里的分页分为前台分页和后台分页。

(1)前台分页。前台分页只要使用DataTable插件即可,后台接口每次返回全部的数据,前台插件默认根据每页显示个数进行分页。

(2)后台分页

Flask-SQLAlchemy 支持分页的方法有limit和offset方法。例如:

9887d76317f47bdd3c2ca285cdfe8e6f.png

然后和前台的dataTable关联起来就行了。

更新数据

编辑或者新建后,需要向数据库操作写数据。如下代码。如果id=0表示新增,否则是编辑。每次更新数据库都需要db.session.commit方法写入数据库。

c8d90d03c0918611a5b88958bfefcfc2.png

联表查询

上面的例子中,比较简单,没有涉及到联表查询。但是flask sqlalchemy也支持联表查询。一般是使用join方法。例如:

news = db.session.query(Table1.param1,Table1.params2).join(Table2, Table2.params1=Table1.params1).join(Table3, Table3.params1=Table1.params1).first()

这个先讲到这里吧,后面会继续分享Flask的其他功能。

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值