Flask-SQLALchemy 是一个给你的应用添加 SQLALchemy 支持的 Flask 扩展。SQLALchemy 是Python语言的SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行,提供能兼容众多数据库(如 SQLite、MySQL、Postgres、Oracle、MS-SQL、SQLServer 和 Firebird)的企业级持久性模型。
一、为你的Flask应用加载Flask-SqlAlchemy扩展
Code example:

SQLALCHEMY_DATABASE_URI格式实例:

二、建立数据库模型和初始化数据库
建立数据库模型:

Code example:

初始化数据库也特别简单,只需要调用 db.create_all() 函数就可以了。

Code example:

三、插入数据
Code example:

四、查询数据
用主键获取数据:

Code example:

通过一个精确参数进行反查:

Code example:

模糊查询:

Code example:

逻辑非1:

Code example:

逻辑非2:

Code example:

逻辑与:

Code example:

逻辑或:

Code example:

六、查询数据加工
排序和限制函数可以跟在query或filter后面。
排序:

Code example:

限制返回的数目:

Code example:

六、查询数据返回
返回查询到的第一个对象:

Code example:

返回所有查询到的对象:

Code example:

七、删除数据
Code example:

八、更新数据
Code example:

SQLALchemy-查询篇

似乎ORM最难设计的部分是查询。特别是面向对象的查询,今天学习SQLAlchemy,发现SQLAlchemy的查询语法竟如此灵活,惊叹其如此强大的表达能力的同时也对Python也有了更深的认识。下面看一下我写的一些查询语句:
Python代码:

Flask SQLAlchemy 表字段默认值

在网上查到的SQLAlchemy设置字段默认值的方法都是类似如下方法:

但这种方法其实这种方法根本就没有在数据库里面设置默认值,只是使用了SQLAlchemy Model类提交数据时添加上去的值,并不适合需要取数据库所有服务器时间的场合。
wKioL1Sr8yrAvAO6AADlfZ8MM_8742

后来,发现一种使用SQLAlchemy模型直接在数据库设置默认值的方法:

#mysql 日期设置默认值必须使用timestamp类型
from sqlalchemy.sql.sqltypes import TIMESTAMP

#func用来生成数据库函数代码,跟踪进源代码看一***释就明白了
from sqlalchemy.sql import func

最新数据库表效果:
wKioL1Sr9CGSpkYkAADgglLOfkY988

在SQLAlchemy中使用字符串查询及原生SQL语句

SQLAlchemy提供给我们非常丰富的数据库查询方法,比如下面的代码中我们可以直接将查询条件以字符串的方式传入filter方法:

其相当于执行了下面的SQL语句:

上面的例子中我们直接指定了id的值小于244,如果我们希望动态传入参数,可以使用name=:value的方式,即以一个冒号:作为参数变量的前缀,然后在params方法中给出具体的参数值:
点击(此处)折叠或打开

其相当于执行了下面的SQL语句:

或者我们可以直接把完整的查询语句放入filter方法中:

我们甚至可以不使用映射类,直接在query方法中指定查询结果字段,然后在filter方法中写入SQL语句:

其相当于执行以下的SQL语句:

要注意的是,在使用原生字符串SQL查询的时候,如果涉及到嵌套查询,或者一个SQL中出现相同的表名的情况下,假如希望按照明某个表字段进行排序,那么必须明确给出,是按照哪个表的字段排序:

上面的例子中,第一句直接用”name”来排序,但是SQLAlchemy不知道是应该用哪个User表的name排序,所以后面两个方法中,我们分别给出了明确的指示,其执行SQL语句如下:

Categories: 未分类

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *