首页 > 数据库 >Flask 学习-14.Flask-SQLAlchemy ORM操作数据库增删改查

Flask 学习-14.Flask-SQLAlchemy ORM操作数据库增删改查

时间:2022-08-23 20:37:17浏览次数:97  
标签:__ SQLAlchemy 14 Flask app db Students session name

前言

SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。
它提供了SQL工具包和ORM(对象关系映射)工具,类似于Django 自带的 ORM 框架操作数据库。

创建模型

先创建模型

from flask import Flask, url_for, request, redirect, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# 设置数据库连接地址
DB_URI = 'mysql+pymysql://root:[email protected]:3306/web'
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
# 是否追踪数据库修改,一般不开启, 会影响性能
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 是否显示底层执行的SQL语句
app.config['SQLALCHEMY_ECHO'] = True

# 初始化db,关联flask 项目
db = SQLAlchemy(app)


# 创建模型
class Students(db.Model):
    __tablename__ = 'students'  # 数据库表名

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
    fullname = db.Column(db.String(30))
    nickname = db.Column(db.String(30))

    def __repr__(self):
        return "<Students(name='%s', fullname='%s', nickname='%s')>" % (
                 self.name, self.fullname, self.nickname)

if __name__ == '__main__':
    # 创建表
    db.create_all()
    app.run(debug=True)

新增数据

往表里面添加数据db.session.add()

@app.route('/demo', methods=["GET"])
def demo():
    # 实例化 Students 模型对象
    user = Students(name='yy', fullname='yoyo')
    # 添加到会话,并用commit提交数据
    db.session.add(user)
    db.session.commit()
    return {
        "code": 0,
        "msg": "create success!"
    }

访问接口地址http://127.0.0.1:5000/demo,数据库就会有新增数据

一次添加多个数据,用db.session.add_all()

@app.route('/demo', methods=["GET"])
def demo():
    # 实例化 Students 模型对象
    user1 = Students(name='yy1', fullname='yoyo1')
    user2 = Students(name='yy2', fullname='yoyo2')
    user3 = Students(name='yy3', fullname='yoyo3')
    # 添加到会话,并用commit提交数据
    # db.session.add(user)
    db.session.add_all([user1, user2, user3])
    db.session.commit()
    return {
        "code": 0,
        "msg": "create success!"
    }

query 查询数据

查询表的全部数据

Students.query.all()

查询示例

@app.route('/demo', methods=["GET"])
def demo():
    # 返回列表
    all = Students.query.all()
    print(all)
    return {
        "code": 0,
        "msg": "success"
    }

查询结果返回一个对象列表

[<Students(name='yy', fullname='yoyo', nickname='None')>, <Students(name='yy1', fullname='yoyo1', nickname='None')>]

查询第一个结果

Students.query.first()

get()方法可以直接通过id查询

Students.query.get(1)

如果没有查询到结果返回None, 这一点处理的比较好

支持filter() 和 filter_by() 查询

Students.query.filter(Students.name == 'yy').all()
Students.query.filter_by(name='yy').all()

关于filter() 和 filter_by()的区别可以看前面这篇https://www.cnblogs.com/yoyoketang/p/16487628.html

标签:__,SQLAlchemy,14,Flask,app,db,Students,session,name
From: https://www.cnblogs.com/yoyoketang/p/16617172.html

相关文章

  • Vue项目跑不起来 Uncaught SyntaxError: The requested module '/node_modules/.vit
    一:问题介绍vue项目运行跑不起来提示Browserslist:caniuse-liteisoutdated.Pleaserunnpxbrowserslist@latest--update-db遇到这个情况首先想到重新安装依赖重启项目......
  • Flask 学习-12.Flask-SQLAlchemy链接mysql数据库
    前言SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。SQLAlchemy是目前python中最强大的ORM框架,功能全面。Flask-SQLAlche......
  • 14-JSP原理
    14-JSP原理概述本文主要讲述JSP的原理在前面的练习中,我们知道JSP就是一个类似HTML文件的东西,只是其中可以添加java代码,来添加一些动态元素那么JSP和Servlet又是什么关......
  • 《GB14925-2010》PDF下载
    《GB14925-2010实验动物环境及设施》PDF下载《GB14925-2010》简介本标准规定了实验动物及动物实验设施和环境条件的技术要求及检测方法,同时规定了垫料、饮水和笼具的......
  • 《GB14923-2010》PDF下载
    《GB14923-2010实验动物哺乳类实验动物的遗传质量控制》PDF下载《GB14923-2010》简介本标准规定了哺乳类实验动物的遗传分类及命名原则、繁殖交配方法和近交系动物的......
  • Flask 学习-11.redirect() 重定向
    前言使用redirect()函数可以重定向请求redirect()函数当我们访问一个需要用户先登录才能访问的地址时,比如获取用户信息,如果用户没登录,需重定向到登录页。fromflask......
  • Flask 学习-10.url_for()函数获取视图url
    前言在浏览器输入url地址可以访问到视图函数,如果需要反向获取对应视图的url地址可以用url_for()函数url_for()函数url_for()函数用于构建指定函数的URL。它把函数名......
  • Win7系统如何给电脑硬盘重新分区 (2014-11-06 12:03:23)
    Win7系统如何给电脑硬盘重新分区Win7系统下,如果想进行磁盘分割,可以用Win7自带的磁盘管理工具来调整分区大小。具体步骤如下:打开Win7控制面板,在系统和安全-管理工具中点击......
  • JS判断是手机访问还是电脑访问,并自动跳转 可在PHP中使用 (2014-12-02 14:41:26)
    方法一、在head内调用以下代码《uaredirect.js》该文件下载地址:http://siteapp.baidu.com/static/webappservice/uaredirect.js百度网盘下载地址:http://pan.baidu.com/......
  • 功能安全和预期功能安全——iso26262和iso21448
    自动驾驶汽车功能安全的国际标准是iso26262,而自动驾驶预期功能安全的国际标准是iso21448。这两者之间的关系如何呢?参考资料:1、揭秘ISO21448,它是自动驾驶行业的新风向标......