Python框架学习之Flask中的数据库操作

  数据库操作在web开发中扮演着一个很重要的角色,网站中很多重要的信息都需要保存到数据库中。如用户名、密码等等其他信息。Django框架是一个基于MVT思想的框架,也就是说他本身就已经封装了Model类,可以在文件中直接继承过来。但是在Flask中,并没有把Model类封装好,需要使用一个扩展包,Flask-SQLAlchemy。它是一个对数据库的抽象,让开发者不用这些编写SQL语句,而是使用其提供的接口去操作数据库,这其中涉及到一个非常重要的思想:ORM什么是ORM呢?下面我们就来详细讲解一下。

一、ORM

  1. ORM的全称是:Object Relationship Map:对象-关系映射。主要的功能是实现模型对象到关系型数据库数据的映射。说白了就是使用通过对象去操作数据库。

  2. 操作过程图:

 

  3. 优点:

    (1). 不需要编写SQL代码,这样可以把精力放在业务逻辑处理上。

    (2). 使用对象的方式去操作数据库。实现数据模型与数据库的解耦,利于开发。

  4. 缺点:

    性能较低。

二、Flask-SQLAlchemy的介绍

  1.设置配置信息

    在开发中,一般是把一些配置信息都写在一个单独的文件中,如settings.py。这样一些安全信息就可以得到保存!

    重点字段有:

      数据库的指定是使用URL的方式来指定的:‘mysql://用户名:密码@服务器地址:端口号/数据库名‘,但是连接SQLite是使用这用格式:sqlite:////absolute/path/to/foo.db,使用////开头

        SQLALCHEMY_DATABASE_URI = ‘myslq://root:[email protected]:3306/test‘

      SQLALCHEMY_POOL_RECYCLE:设置多少秒后自动回收连接,对MySQL来说,默认是2小时

      SQLALCHEMY_ECHO:设置True的话,查询时会显示原始SQL语句。

       SQLALCHEMY_TRACK_MODIFICATIONS:动态追踪修改设置。

  2. 常用的SQLAlchemy字段类型:

    Integer

    String

    Numberic

    Boolean

    Date

  3. 常用的SQLAlchemy列选项

    primary_key:如果为True,表示主键。Flask中没有自动生成主键,需要自定义。

    unique:为True,设置该列不能有重复值,如用户名、邮箱、手机号

    nullable:为True的话可以为null

    default:设置默认值

    index:为True,设置该列为索引,默认索引是主键。

  4.关系选项

    backref:在关系的另一模型中添加的反向引用,查询时起很大作用。

    secondary:用于多对多关系中表的名字

    primary join:

    

三、Flask-SQLAlchemy的基本操作

  在Flask-SQLAlchemy中的增、删、改操作是由数据库会话(db.session)管理的。也就是说,在准备把数据写入数据库前,要先将数据添加(add())到会话中,然后使用commit()提交会话。

  在Flask-SQLAlchemy中的查询操作都是通过query对象操作数据库。基本的查询是返回表中的所有数据,还可以使用过滤器进行更精确的数据库查询。

  1.常用查询过滤器:

    过滤器得到的还只是一些对象,需要使用执行器来获取真正的数据。

    filter(): 把过滤器添加到原查询上,返回一个新查询,需要使用模型类名去获取字段来进行比较。

    filter_by():把等值(只能使用=比较操作)过滤器添加到查询上,返回一个新查询。

    order_by():根据指定条件对查询结果进行排序,返回一个新查询。

    group_by():根据指定条件对原查询结果进行分组,返回一个新查询。

  2.常用查询执行器

    all():以列表的形式返回查询的所有结果

    first():返回查询的第一个结果,

    first_or_404():同first(), 只不过如果没有找到的话,返回404错误

    get():返回指定主键对应的行,

    get_or_404():返回指定主键对应的行,如不存在,返回404错误

    count():返回查询结果的数量

    paginate():返回一个Paginate对象,包含指定范围内的结果。

  3. 查询条件

    startswith(‘xx‘):查询以xx开头的所有数据

    endswith(‘xx‘):查询以xx结尾的所有数据

    not_():取反

    and_():返回and()条件满足的所有数据

    or_():返回or()条件满足的所有数据

原文地址:https://www.cnblogs.com/dangkai/p/10796756.html

时间: 2024-10-12 14:17:16

Python框架学习之Flask中的数据库操作的相关文章

Python框架学习之Flask中的常用扩展包

Flask框架是一个扩展性非常强的框架,所以导致它有非常多的扩展包.这些扩展包的功能都很强大.本节主要汇总一些常用的扩展包. 一. Flask-Script pip install flask-script 作用: 1. 可以让我们通过命令行的方式启动服务器,还可以手动指定参数,如ip,port. python hello.py runserver -h 127.0.0.1 -p 6666 2. 结合Flask-Migration扩展包可以实现对数据的迁移 二. Flask-WTF 作用是为了能

php laravel框架学习笔记 (二) 数据库操作

原博客链接:http://www.cnblogs.com/bitch1319453/p/6810492.html mysql基本配置 你可用通过配置环境变量,使用cmd进入mysql,当然还有一种东西叫做mysql console 创建一个数据库   create database [数据库名]   [选项]; 展示已经创建的数据库 show datebases; 在登录后使用 use 语句指定数据库 use 数据库名; 展示表show tables;(需要先指定数据库) 展示表的内容desc

关于Django中的数据库操作API之distinct去重的一个误传

关于Django中的数据库操作API之distinct去重的一个误传 最近在做一个Server的项目,后台框架是Apache mod_wsgi + django.django是一个基于Python的Web开发框架,功能十分强大,至于有多强大,还是读者们自己去体验吧.我在这里要说的一个问题是关于Python的ORM功能的.问题就在django提供的数据库操作API中的distinct()函数,了解SQL语句的读者都应该知道,DISTINCT关键字可以在select操作时去重.django里的这个d

CodeIgniter框架——访问方式 URI 分配变量 数据库操作

1.访问方式: CodeIgniter 的访问URL使用的是pathinfo,入口文件/控制器/方法(/参数列表) eg:localhost/index.php/welcome/index/id 第一段表示调用控制器类. 第二段表示调用类中的函数或方法. 第三及更多的段表示的是传递给控制器的参数,如 ID 或其它各种变量. 2.URI参数获取: 控制器端代码 1 public function getUri($id,$name,$year) 2 { 3 echo "id--->"

android中的数据库操作(转)

android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   android中采用的数据库是SQLite这个轻量级的嵌入式开源数据库,它是用c语言构建的.相关简介可以从链接查看. 2.数据库基本知识观花   对于一些和我一样还没有真正系统学习数据库技术的同学来说,把SQL92标准中的一些基本概念.基本语句快速的了解一下,是很有必要的,这样待会用Android的da

Android学习--------实现增删改查数据库操作以及实现类似微信好友对话管理操作

最近的一个实验用到东西挺多,特地总结一下. 要求功能: 1.第一个页面添加歌曲名和歌手,跳到第二个页面列表显示所有记录,使用sqlite数据库 2.对于第二个页面显示的信息可以进行删除和修改操作,并自动刷新 最后我做的效果: 长按列表项弹出单个管理的菜单,像微信好友对话管理一样. 删除时可以直接删除这一条并在列表中直接显示,更新时弹出对话框更新内容提交后在列表中重新显示. 做此例遇到的困难: 1.菜单获取上下文 2.获取对话框中的内容 3.对话框按钮添加监听事件-----注意包不要导错:impo

android中的数据库操作【转】

http://blog.csdn.net/nieweilin/article/details/5919013 android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   android中采用的数据库是SQLite这个轻量级的嵌入式开源数据库,它是用c语言构建的.相关简介可以从链接查看. 2.数据库基本知识观花   对于一些和我一样还没有真正系统学习数据库技术的同

SQL中DML(数据库操作语言)的使用

1.插入语句: INSERT [INTO] table [(column1, column2, column3, . . .)] VALUES(value1, value2, value3, . . .); 例:INSERT INTO user VALUES(NULL, 'test', '123456'); 例:INSERT INTO user (username, password) VALUES('test', '123456'); 实际上还有一种方式: 例:INSERT INTO user

Python Web框架学习【Flask】

了解flask flask 是利用Python编写的轻量级Web应用框架 Flask也被称为 "microframework" ,因为它使用简单的核心,用 extension 增加其他功能. Flask没有默认使用的数据库.窗体验证工具. 其 WSGI 工具箱采用 Werkzeug 模板引擎则使用 Jinja2 Flask使用 BSD 授权 WSGI(PythonWeb服务器网关接口) Python Web Server Gateway InterfacePython应用程序或框架和W