在 flask 中使用 SQLAlchemy

在 flask 中, 很多人喜欢通过 SQLAlchemy 来操作数据库。这种情况下推荐使用包代替模块, 把数据模型剥离到一个独立的模块中。这样的做法不是必须的, 但是更加合理。

Flask-SQLAlchemy Extension

SQLAlchemy 是一个通用的数据库抽象层和 ORM, 它需要一些额外的配置, Flask 中有一个扩展来处理这些。

Declarative

SQLAchemy 中的 declarative extension 是最近出现的一种方法。这种方法允许你一次性定义表单和数据模型, 这和 Django 的工作方式类似。

下面是一个database.py模块的例子:

我们自己定义的数据模型只需要继承上面代码中的Base就可以了。这个地方不用担心线程安全的问题,因为 SQLAlchemy 已经通过scoped_session帮我们处理了。

我们只需要把下面的代码放入我们的应用模块中就可以以 declarative 的方式来使用 SQLAlchemy 了。Flask 会在 request 结束或者应用退出时自动关闭 session:

下面的代码是一个数据模型的例子(可以放入 models.py中, e.g.):

创建数据库的时候可以使用init_db():

向数据库中插入记录:

查询也很简单:

注: 本文翻译自官方文档 http://flask.pocoo.org/docs/0.12/patterns/sqlalchemy/

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏无所事事者爱嘲笑

Vue.set() this.$set()引发的视图更新思考

1424
来自专栏前端说吧

vuex - 项目结构目录及一些简单配置

3516
来自专栏iOS122-移动混合开发研究院

iOS程序猿如何快速掌握 PHP,化身"全栈攻城狮"?

这是一篇以 iOS 开发人员的视角写给广大iOS 程序猿的 PHP 入门指南.在这篇文章里我努力去发掘 objectiv-c 与 php 之间的共性,来帮助有一...

2087
来自专栏向治洪

android 优化之布局优化

布局优化的思路很简单,尽量减少布局文件的层级,看过系统源码的都知道,Android view绘制都是逐层绘制的,所以布局的层级少了,decodeview的时候绘...

2016
来自专栏自动化测试实战

flask第二十篇——模板【3】

2246
来自专栏lestat's blog

同一页面巧妙使用多个element-ui的upload组件

3364
来自专栏Java技术分享

SpringBoot第3小节:数据库操作(上)

Spring-Data-Jpa,定义了一系列对象持久化的标准,就是Hibernate的整合。这节讲的是datasouce和jpa的配置。 1.在pom.xml文...

2855
来自专栏IMWeb前端团队

前端需要知道的 依赖注入(Dependency Injection, DI)

前端需要知道的 依赖注入(Dependency Injection, DI) 1. 前言 XX库实现了依赖注入,哇塞,好牛X呀~~~ 切,依赖注入的实现那么简单...

2315
来自专栏前端说吧

vuex - 项目结构目录及一些简单配置

942
来自专栏大内老A

ASP.NET MVC的Razor引擎:View编译原理

通过.cshtml或者.vbhtml文件定义的View能够被执行,必须先被编译成存在于某个程序集的类型,ASP.NET MVC采用动态编译的方式对View文件实...

1877

扫码关注云+社区