Flask框架——数据库操作命令(增删改查)
目录
创建数据表
添加数据
插入单条数据
插入多条数据
查询数据
全部查询
精确查询
模糊查询
主键查询
排序
修改数据
删除数据
删除数据表
上篇文章我们学习了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框架——数据库操作命令(增删改查)相关推荐
- Springboot使用JPA框架对数据库实现增删改查(附详细代码)
前言 1.本文将详细阐述如何使用JPA框架对数据库实现增删改查操作,业务中比较常见的应用场景几乎在这里都能看到,并且有详尽的代码可供直观演示,其中遇到的坑也进行了实时标注. 2.JPA的环境配置在前面 ...
- 如何使用mybatis框架对数据库进行增删改查?
1.配置mybatis 1.1 引入依赖 mybatis依赖 <dependency><groupId>org.mybatis</groupId><artif ...
- Flask+VUE 实现页面增删改查显示开发+测试(图文教程附源码)
目录 一.新建项目并初始化 二.安装依赖 axios.elementUI 三.Vue代码 四.进行接口联调 五.后端接口优化 六.web页面功能测试 七.总结 八.展望 九.附录(截止发文时的代码) ...
- Django实现对数据库数据增删改查(二)
目录 1.基本框架 1.1.路由分发 1.2.视图函数-逻辑处理 1.3.模板 2.查询功能 2.1.视图函数 2.2.模板函数 3.添加功能 3.1.路由分发 3.2视图函数 3.3.模板 4.编辑 ...
- C#语言连接Mysql数据库实现增删改查
C#语言连接Mysql数据库实现增删改查 实现效果如图 在此之前先下载一个mysql.dll 库 如下 链接:https://pan.baidu.com/s/17Nv_1W3KbXfWgdOvWf_S ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- Django 07. django框架模型之增删改查基本操作
简介 django框架模型之数据库表增删改查基本操作 1. 生成数据库表结构 models.py #!/usr/bin/env python # -*- coding: utf-8 - ...
- java ssm框架做增删改查,使用SSM框架组合实现增删改查的功能
基于ssm框架组合的增删改查功能 ssm框架组合之前已经搭建完成了,下面基于该框架组合实现增删改查的功能,首先创建一个数据库和一张表: CREATE DATABASE `ssmteam` /*!401 ...
- python数据库的增删改查_Python|实现数据库的增删改查
Python|实现数据库的增删改查 2020-10-05 1 前言最近在学flask网页制作,需要用到数据库相关知识,在经过初步学习后实现了用python来实现数据库的相关操作,即增删改查.2 前提条 ...
最新文章
- Java枚举类使用和总结
- JZOJ 4910. 【NOIP2017模拟12.3】子串
- linux eclipse报错日志,centos6.8命令行启动eclipse报org.eclipse.swt.SWTError错误
- 6个信号提醒是时候跳槽了 CIO务必get到
- jQuery复选框多选问题
- oracle数据导入到python,Python导入oracle数据的方法 -电脑资料
- 哔哩哔哩公司swot分析_是时候颠覆你的SWOT营销分析法了!TOWS分析法可能更适合你...
- python shell常用命令_python 之 shell命令执行
- CB Loss:基于有效样本的类别不平衡损失
- ElasticSearch解决中文搜索只能搜索单个字符的问题
- JAVA中构造方法说法_关于Java程序的构造方法,说法错误的是( )
- git配置ssh私钥_GitLab 配置
- html php简单程序,PHP_php简单的分页程序,[code]html head me - phpStudy
- 计算机显示屏知识,电脑显示器知识大全
- Flask 框架(四)— 表单处理
- 腾讯云数据库开源再突破:TDSQL PG版查询性能提升百倍
- 机器人是如何实现控制的,它的控制器有哪些组成?
- 模型驱动PDR、数据驱动PDR实验效果对比
- 生日悖论的泛化问题的讨论
- android 替换全局字体
热门文章
- 3d 打印模型下载网站
- Bmob用户功能详解(一)
- SQL_电力抢修工程插入数据语句
- skyline v6 三维学习软件
- Problem : 狼和羊
- 共享打印机提示0x000006cc的解决方法
- zabbix===》微信报警、聚合图形、自动发现自动注册、监控NFS、MySQL、web服务、URL地址
- 当前计算机技术在制图,浅谈计算机技术在测绘工程制图中的应用张琪平(原稿)...
- ctf write cookies欺骗
- 【目标检测数据集汇总】YOLO txt格式各种数据集