原标题:Flask 入门系列教程03-数据库操作
背景介绍
Web开发中,一个重要的应用就是数据库了。python使用最广泛的ORM框架是SQLAlchemy,它是一个很强大的关系型数据库框架,不仅支持高层ORM,也支持底层的SQL操作,另外,它也支持多种数据库引擎,例如mysql,sqlite等。在flask中,一般使用flask-sqlalchemy,它封装了SQLAlchemy框架,使操作数据库更加简单方便。下面就把flask-sqlalchemy加入到我们的代码中。
安装flask-sqlalchemy
pip install flask-sqlalchemy
配置项目连接的数据库
在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对象
说明:
(1) 每个数据库表必须对应这里的一个类,且继承db.Model。
(2) __repr__方法是生成对象时,默认返回的对象内容。
(3) 列的类型是 Column 的第一个参数。你可以直接提供它们或进一步规定(比如提供一个长度)。下面的类型是最常用的:
获取列表数据
(1)数据获取的接口直接从数据库中取数据即可。
(2)html中使用模板将取到的数据,解析到html元素中。
分页
如果元素特别多,一般需要分页。这里的分页分为前台分页和后台分页。
(1)前台分页。前台分页只要使用DataTable插件即可,后台接口每次返回全部的数据,前台插件默认根据每页显示个数进行分页。
(2)后台分页
Flask-SQLAlchemy 支持分页的方法有limit和offset方法。例如:
然后和前台的dataTable关联起来就行了。
更新数据
编辑或者新建后,需要向数据库操作写数据。如下代码。如果id=0表示新增,否则是编辑。每次更新数据库都需要db.session.commit方法写入数据库。
联表查询
上面的例子中,比较简单,没有涉及到联表查询。但是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的其他功能。
责任编辑: