Flask 数据库-单表操作

2023-11-15

Flask-SQLAlchemy

Flask-SQLAlchemy是在Flask中操作关系型数据库的拓展。是以面向模型对象的形式操作数据库,通过迁移完成建表

安装

pip install flask-sqlalchemy

基本配置

  • 第一种
from flask_sqlalchemy import SQLAlchemy
# 配置数据库访问链接
app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:mysql@127.0.0.1:3306/demo"
# 设置是否追踪数据库的增删改查,会有显著的开销,一般设置为False
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Flase
# 创建SQLAlchemy对象,,并与当前数据库关联,TCP连接
db = SQLAlchemy(app)
  • 第二种
from flask_sqlalchemy import SQLAlchemy

class Config(object):
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/demo1"
    SQLALCHEMY_TRACK_MODIFICATIONS = False


app = Flask(__name__)
app.config.from_object(Config)

注意,如果要实现以下操作,请先执行以上步骤,实现数据库的连接

定义模型类

class User(db.Model):
    # 定义表名
    __tablename__ = "user"
    # 定义id为主键,必须设置id,并且必须设置成主键(primary_key)
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128))
    author = db.Column(db.Integer)

实现建表

if __name__ == '__main__':
    # 删除表:没有实际意义,在学习的时候,可以保证每次的数据都是新的
    # db.drop_all()
    # 建表:会将继承自db.Model的类在数据库中映射出一张表
    db.create_all()
    app.run(debug=True, port=8888)

增删改查

user = User(name = "lisi")

或者

user = User()
user.name = "lisi"
  • 然后添加提交
db.session.add(user) 
db.session.commit()

  res = Book.query.filter(Book.id ==2).first()

或者

	res=User.query.first()
  • 然后删除提交
  db.session.delete(res)
  db.session.commit()

user=User.query.first()
user.name='xuzhixiang'
db.session.commit()

或者

user = User().query.filter_by(id=4).first()
user.name = '二狗'
db.session.commit()

user = User().query.filter_by(id=4).first()
print(user.name)
  • 语法:
  • 模型类名.query.过滤器.查询执⾏行行器器

过滤器

返回BaseQuery类型对象 并不是最终的数据 最终的数据由 查询执行器获取

filert()  按照条件查找

比如:

User.quer.filter(User.name = “lisi”)

filter_by()  按照条件精确查找

比如:

User.query.filter_by(id=1)

查询执行器

  • 返回最终的结果
all ( ) 返回查询到的所有结果,是一个列表, User.query.filter(User.name != ‘wang’).all()
first ( ) 返回查询的第一个结果,User.query.filter(User.name != ‘wang’).first()
get ( ) 返回主键对应的行, User.query.get(1)
count ( ) 返回查询结果的数量 User.query.count()
paginate ( ) 参数分别对应的是要查询的是第几页,每页几条数据,如果有错是否输出。 User.query.paginate(2, 3, False),这个例子是,每页三条数据,查询第二页的数据

排序

order_by()

例子:

  • 正序

User.query.order_by(User.name)

  • 倒序

User.query.order_by(User.name.desc())

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask 数据库-单表操作 的相关文章

随机推荐

  • 企业微信刚上线被曝存安全漏洞

    4月18日 腾讯正式在iOS Android Windows Mac四个平台同时推出了企业微信1 0版本 这个江湖传闻已久的第一代企业微信1 0版本也是腾讯用来投石问路的产品 用户可注册并免费使用 这款定位为一款办公沟通工具 想让我们的工作
  • 软件测试之删除功能点用例梳理

    共计22点 一 UI界面测试 删除按钮 UI显示正常 布局合理 删除后 结果展示 布局合理 删除后 页面的分页 布局合理 二 用户体验测试 不选择任何信息 直接点击删除按钮 是否有提示 删除某条或多条信息时 应该有确认提示 三 功能测试 删
  • docker mysql5.7.16 中文乱码

    有部分同学会遇到 在centos上docker mysql没乱码 但是在fedora系统上的docker mysql会有乱码问题 这兴许是docker mysql的问题 这里的bug我们不去追究 这里主要讲解决方案 首先系统要安装有dock
  • 工业质检如何以“智”取胜?15分钟上手工业零部件检测全流程方案

    工信部联合国家发展改革委 教育部 科技部等部门发布了十四五智能制造发展规划 规划中提出 到2025年70 规模以上的制造业企业基本要实现数字化网络化 建成500个以上引领行业发展的智能制造示范工厂 制造业离不开质检质检需要AI智能化赋能 制
  • 问题:your cpu does not support kvm extensions

    问题 我的BIOS开启了CPU虚拟化 但是虚拟机仍然显示your cpu does not support kvm extensions 解决 1 关闭虚拟机 2 虚拟机上单击右键 设置 3 选择下图选项 4 重启虚拟机 问题解决
  • JAVA 中的 -> 是什么意思?

    在 JAVA核心编程 中 有一段这样的代码 import javax swing import java awt import java io File public class ImageViewer public static void
  • 我的创作纪念日2023.8.5

    机缘 在CSDN的创作开始于去年 创作的初衷是希望对自己的学习经历进行记录 同时也把自己的经验和收获传递给更多需要的小伙伴 创作博客的过程是一个将输入的知识进行再生产的过程 在此期间 知识获得了沉淀和提纯 思路和想法也愈发通畅 收获 1 在
  • sql根据入职日期查询工龄

    员工表 查询入职满5年的员工 员工表 查询入职满5年的员工在这里插入图片描述 部门表 在这里插入图片描述 SELECT FROM COM WHERE entry lt DATE SUB SYSDATE INTERVAL 5 YEAR 原文链
  • 苹果开发者账号Apple ID如何进行资料修改?

    我们在申请了开发者账号后 有时候需要对账号进行资料修改 只要你有了Apple ID 也就是邮箱 和苹果的密保 密码 那这个Apple ID就唯一属于你的了 下面会截图说明如何进行修改 首先登陆Apple ID管理网站 https apple
  • Leetcode466.统计重复个数——掐头去尾寻找循环点

    文章目录 引入 本题题解 引入 每日一题出现了这么一道题 466 统计重复个数 题目在此就不做展示了 直接说思路 刚拿到这道题的时候 首先会找 多少个s1才能够拼成一个s2 比如 abba 和 ab 那么一个 abba 里面就包含了 abb
  • 蓝桥杯真题:乘积尾零(2018 年省赛)

    如下的 1010 行数据 每行有 1010 个整数 请你求出它们的乘积的末尾有多少个零 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432
  • c结构体中char[0]的作用-实现数组扩展

    struct Data int len char data 0 原来的data中没有元素 不分配内存 结构体Data的大小为4 假如现在分配15字节的内存 并且将指向这块内存的指针强制转换为 Data Data pData Data mal
  • 用于多模态图像配准的弱监督卷积神经网络

    Weakly Supervised Convolutional Neural Networks for Multimodal Image Registration 摘要 在多模态图像配准的监督学习中 最基本的挑战之一是体素级空间对应的基值的
  • lua学习笔记之详解lua堆栈

    原文连接 http blog csdn net musicvs article details 8440707 1 Lua的堆栈和全局表 我们来简单解释一下Lua的堆栈和全局表 堆栈大家应该会比较熟悉 它主要是用来让C 和Lua通信的 是的
  • STA series --- 8.Timing Verification (PARTI)

    本篇内容 基于阅读J Bhasker Rakesh Chadha著作 Static Timing Analysis for Nanometer Designs 后进行的总结以及自己的观点和感想 如有不正确的地方 还请指点 读者有微电子基础将
  • Web安全之SQL注入攻击

    什么是SQL注入式攻击 所谓SQL注入式攻击 就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串 欺骗服务器执行恶意的SQL命令 在某些表单中 用户输入的内容直接用来构造 或者影响 动态SQL命令 或作为存储过程的输入参数
  • Synchronized的原理及自旋锁,偏向锁,轻量级锁,重量级锁的区别

    在多线程并发编程中Synchronized一直是元老级角色 很多人都会称呼它为重量级锁 但是随着Java SE1 6对Synchronized进行了各种优化之后 有些情况下它并不那么重了 Java SE1 6中为了减少获得锁和释放锁带来的性
  • WebGoatV8.1(challenges)详细过关教程

    一 Admin lost password 设置代理继续抓包 刷新题目本页面 抓取url路径为 WebGoat challenge logo的包 重放在回应包里面搜索admin找到账号和密码 登录拿到flag 二 Without passw
  • 华为od统一考试B卷【师徒关系】

    题目描述 给定数组 2 1 3 2 每组表示师徒关系 第一个元素是第二个元素的老师 数字代表排名 现在找出比自己强的徒弟 输入 2 1 3 2 输出 0 1 2 第一行数据 2 1 表示排名第 2 的员工是排名第 1 员工的导师 后面的数据
  • Flask 数据库-单表操作

    Flask SQLAlchemy Flask SQLAlchemy是在Flask中操作关系型数据库的拓展 是以面向模型对象的形式操作数据库 通过迁移完成建表 安装 pip install flask sqlalchemy 基本配置 第一种