目录

创建数据表

添加数据

插入单条数据

插入多条数据

查询数据

全部查询

精确查询

模糊查询

主键查询

排序

修改数据

删除数据

删除数据表


上篇文章我们学习了Flask框架——数据库配置及迁移同步,这篇文章我们学习Flask框架——数据库操作命令(增删改查)。

首先我们创建一个Flask项目,其目录如下所示:

配置文件settings.py代码如下所示:

class Configs:ENV='development'DEBUG=True# 设置连接数据库路径SQLALCHEMY_DATABASE_URI='mysql+pymysql://root:123456@127.0.0.1:3306/test'# 每次请求结束后自动提交数据库中的改动SQLALCHEMY_COMMIT_ON_TEARDOWN=True# 禁用SQLAlchemy对追踪对象的修改并且发送信号SQLALCHEMY_TRACK_MODIFICATIONS = False# 操作数据库时显示原始SQL语句SQLALCHEMY_ECHO=True

编写好settings.py配置文件后,我们就开始编写导入配置、映射对象和数据模型类等代码,由于代码比较少,方便我们查看和使用,我就把这些代码都写在app.py文件中了,注意:在实际开发中,数据模型和映射对象都是写在其他文件中的。

from flask import Flask
import settings
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
app = Flask(__name__)app.config.from_object(settings.Configs)  # 加载flask项目配置db=SQLAlchemy(app)    # 创建映射对象,并绑定在app中# 创建模型类
class User(db.Model):#设置表名__tablename__ = 'user'# 创建数据库表字段# db.Column(类型,约束)id=db.Column(db.Integer,primary_key=True,autoincrement=True)username=db.Column(db.String(15),nullable=False)password=db.Column(db.String(15),nullable=False)phone=db.Column(db.String(11),unique=True)rdatetime=db.Column(db.DateTime,default=datetime.now)if __name__ == '__main__':app.run()

好了,基础代码已经写好了,接下来正式对数据库进行增删改查等操作。

创建数据表

创建数据表只要编写下面代码即可:

db.create.all()

db.create_all()方法将寻找所有db.Model的数据模型类,根据数据模型类创建数据表,这里我们只创建了一个数据模型类。我们在pycharm中通过数据库工具Database来观察数据库的变化,

运行结果如下图所示:

在终端命令行中,我们可以看到原始SQL语句并且在test数据库中创建了一个user数据表。

添加数据

插入单条数据

user1=User(username='zhagsan',password='1245',phone='13700100000')  #创建实例对象
db.session.add(user1)  #插入数据
db.session.commit()   #提交事务

首先创建一个模型类的实例对象,再使用db.session.add()将实例对象中的参数插入在数据库中,最后使用db.session.comit()来保存我们对数据库的修改。

插入多条数据

user1=User(username='huan',password='123',phone='13700000000')  #创建模型类实例对象
user2=User(username='ying',password='456',phone='13700010000')
user3=User(username='xue',password='789',phone='13700020000')
db.session.add_all([user1, user2, user3])        #插入数据
db.session.commit()            #提交事务

插入多条数据与插入单条数据差不多,插入多条数据也就是创建多个模型类的实例对象,再将实例对象放在列表中,再使用db.session.add_all()方法插入在数据库中,最后使用db.session.comit()来保存我们对数据库的修改。

查询数据

查询数据中,我们可以使用Flask-SQLAlchemy中Model类提供的query属性来查询。

全部查询

查询全部数据只需要一条代码,其代码如下所示:

User.query.all()

精确查询

User.query.filter_by(username='huan').first()  #查询名为huan的数据

通过User.query.filter_by()方法进行查询,然后通过first()方法来返回第一个查询结果。这里我们选择的是查询名为huan的数据。

当数据中没有我们要查询的数据,则会返回None。

模糊查询

当我们需要通过某些数据特征来查询该特征的数据,该怎么查询呢?

User.query.filter(User.phone.endswith('3000')).first()  #获取手机尾号为3000的数据
User.query.filter(User.name!='huan').all()       #获取用户名不是huan的所有数据#导入and方法,实现逻辑与查询
from sqlalchemy import and_
User.query.filter(and_(User.name!='huan',User.phone.endswith('3000'))).all()  #获取用户名不是huan以及手机尾号为3000#导入or方法,实现逻辑或查询
from sqlalchemy import or_
User.query.filter(or_(User.name!='huan',User.email.endswith('3000'))).all()   #获取用户名不是huan或手机尾号为3000#导入not,实现取反查询
from sqlalchemy import not_
User.query.filter(not_(User.name=='huan')).all()  #获取用户名不是huan的所有数据

通过User.phone.endswith()方法来选定查询以什么结尾的数据内容,通过User.query.filter()方法进行查询,最后使用first()方法返回第一个查询结果或all()方法获取查询的全部数据返回的是一个列表。

当然除了查询以什么结尾的数据,还可以选择以什么开头的数据、包含什么什么内容的数据,其代码如下所示:

模型类.属性.startswith()    #以什么开头的数据
模型类.属性.endswith()    #以什么结尾的数据
模型类.属性.contains()    #数据包含什么什么

当我们查询的字段为整型或日期类型时,还可以使用以下代码:

模型类.属性.__lt__(18)                #小于18
模型类.属性.__gt__(18)        #大于18
模型类.属性.__ge__(18)        #大于等于18
模型类.属性.__le__(18)        #小于等于18
模型类.属性.between(18,30)       #18到30之间

当然,也可以直接使用> 、< 、=符号来表示。

主键查询

我们可以通过数据中的主键来查询数据,代码如下:

User.query.get(1)

与其他查询方式不同,通过主键来查询数据是使用.get()方法其参数为键值,如果主键不存在没有返回内容。

当然,我们可以选择返回数据的条数。

User.query.limit(2).all()     #获取所有数据中前两条数据
User.query.offset(2).limit(2).all()    #跳过所有数据中前两条数据再获取跳过后的前两条数据

使用User.query.limit()方法来返回数据的条数,其传递的参数就是返回数据的条数。

排序

query默认情况下是按id升序进行排序的,当遇到复杂情况时就需要时用order_by。

#模型类.query.order_by(参数)
User.query.order_by(User.id).all    #对所有的id进行排序

当我们想要倒序排列数据时,只要在前面加-就可以了。

修改数据

当我们想修改数据时,可以先创建一个变量来接收要修改的数据,通过该变量来修改对应的属性值,最后通过db.session.commit()方法提交事务,代码如下所示:

user = User.query.first() #选定要修改的数据
user.username = 'xiu'  #要修改的参数值
db.session.commit()   #提交事务

当然也可以将数据全部修改,代码如下所示:

user = User.query.all()  #选择所有要修改的数据
for i in user:      #循环遍历i.name = 'dong'     #要修改的参数值db.session.commit()    #提交事务

首先通过User.query.all()来获取所有数据并存放在user变量中,注意all()返回的时一个列表,所以要用for循环来遍历,再根据自身需要来修改数据,最后通过db.session.commit()方法提交事务。

删除数据

删除数据与添加数据很类似,首先通过创建变量来存放要删除的数据,再通过db.session.delete()来删除数据,并使用db.session.commit()方法提交事务。

user = User.query.first()
db.session.delete(user)
db.session.commit()

可以发现,修改数据和删除数据都是先查询接收要修改或删除的数据,所以我们可以根据查询数据的方法要选择我们要修改或删除的数据。

删除数据表

删除数据表很简单,只需要一条代码,其代码如下所示:

db.drop_all()

通过编写这条代码,程序就会删除表名为模型类中的创建数据表的表名。

好了,Flask框架扩展包——flask--sqlalchemy数据库操作命令就讲到这里了,感谢观看,下篇文章继续学习Flask框架——模型关系(一对多)。

公众号:白巧克力LIN

- END -

Flask框架——数据库操作命令(增删改查)相关推荐

  1. Springboot使用JPA框架对数据库实现增删改查(附详细代码)

    前言 1.本文将详细阐述如何使用JPA框架对数据库实现增删改查操作,业务中比较常见的应用场景几乎在这里都能看到,并且有详尽的代码可供直观演示,其中遇到的坑也进行了实时标注. 2.JPA的环境配置在前面 ...

  2. 如何使用mybatis框架对数据库进行增删改查?

    1.配置mybatis 1.1 引入依赖 mybatis依赖 <dependency><groupId>org.mybatis</groupId><artif ...

  3. Flask+VUE 实现页面增删改查显示开发+测试(图文教程附源码)

    目录 一.新建项目并初始化 二.安装依赖 axios.elementUI 三.Vue代码 四.进行接口联调 五.后端接口优化 六.web页面功能测试 七.总结 八.展望 九.附录(截止发文时的代码) ...

  4. Django实现对数据库数据增删改查(二)

    目录 1.基本框架 1.1.路由分发 1.2.视图函数-逻辑处理 1.3.模板 2.查询功能 2.1.视图函数 2.2.模板函数 3.添加功能 3.1.路由分发 3.2视图函数 3.3.模板 4.编辑 ...

  5. C#语言连接Mysql数据库实现增删改查

    C#语言连接Mysql数据库实现增删改查 实现效果如图 在此之前先下载一个mysql.dll 库 如下 链接:https://pan.baidu.com/s/17Nv_1W3KbXfWgdOvWf_S ...

  6. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  7. Django 07. django框架模型之增删改查基本操作

    简介 django框架模型之数据库表增删改查基本操作 1. 生成数据库表结构         models.py #!/usr/bin/env python # -*- coding: utf-8 - ...

  8. java ssm框架做增删改查,使用SSM框架组合实现增删改查的功能

    基于ssm框架组合的增删改查功能 ssm框架组合之前已经搭建完成了,下面基于该框架组合实现增删改查的功能,首先创建一个数据库和一张表: CREATE DATABASE `ssmteam` /*!401 ...

  9. python数据库的增删改查_Python|实现数据库的增删改查

    Python|实现数据库的增删改查 2020-10-05 1 前言最近在学flask网页制作,需要用到数据库相关知识,在经过初步学习后实现了用python来实现数据库的相关操作,即增删改查.2 前提条 ...

最新文章

  1. Java枚举类使用和总结
  2. JZOJ 4910. 【NOIP2017模拟12.3】子串
  3. linux eclipse报错日志,centos6.8命令行启动eclipse报org.eclipse.swt.SWTError错误
  4. 6个信号提醒是时候跳槽了 CIO务必get到
  5. jQuery复选框多选问题
  6. oracle数据导入到python,Python导入oracle数据的方法 -电脑资料
  7. 哔哩哔哩公司swot分析_是时候颠覆你的SWOT营销分析法了!TOWS分析法可能更适合你...
  8. python shell常用命令_python 之 shell命令执行
  9. CB Loss:基于有效样本的类别不平衡损失
  10. ElasticSearch解决中文搜索只能搜索单个字符的问题
  11. JAVA中构造方法说法_关于Java程序的构造方法,说法错误的是( )
  12. git配置ssh私钥_GitLab 配置
  13. html php简单程序,PHP_php简单的分页程序,[code]html head me - phpStudy
  14. 计算机显示屏知识,电脑显示器知识大全
  15. Flask 框架(四)— 表单处理
  16. 腾讯云数据库开源再突破:TDSQL PG版查询性能提升百倍
  17. 机器人是如何实现控制的,它的控制器有哪些组成?
  18. 模型驱动PDR、数据驱动PDR实验效果对比
  19. 生日悖论的泛化问题的讨论
  20. android 替换全局字体

热门文章

  1. 3d 打印模型下载网站
  2. Bmob用户功能详解(一)
  3. SQL_电力抢修工程插入数据语句
  4. skyline v6 三维学习软件
  5. Problem : 狼和羊
  6. 共享打印机提示0x000006cc的解决方法
  7. zabbix===》微信报警、聚合图形、自动发现自动注册、监控NFS、MySQL、web服务、URL地址
  8. 当前计算机技术在制图,浅谈计算机技术在测绘工程制图中的应用张琪平(原稿)...
  9. ctf write cookies欺骗
  10. 【目标检测数据集汇总】YOLO txt格式各种数据集