python flask配置数据库并进行orm操作 flask_sqlalchemy

2024-06-17 09:36

本文主要是介绍python flask配置数据库并进行orm操作 flask_sqlalchemy,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 🌈所属专栏:【Flask】
  • 作者主页:  Mr.Zwq
  • ✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询!

您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩🥰😍

目录

简介

代码实现

exts.py文件

 models.py文件

config.py配置文件

main.py文件 

查询操作

页面输出

在数据库查看

插入操作

页面输出

在数据库查看

总结


简介

        Flask-SQLAlchemy是Flask框架中的一个扩展,它简化了在Flask应用中使用SQLAlchemy的操作。SQLAlchemy是一个强大的关系型数据库框架,它支持多种数据库后台,并提供了高层的对象关系映射(ORM)和底层的原生数据库操作。

以下是Flask-SQLAlchemy的简介,以分点表示和归纳的形式呈现:

  1. 基本概念
    • ORM(Object-Relational Mapping):对象关系映射,它将用户定义的Python类与数据库表相关联,并将这些类(对象)的实例与其对应表中的行相关联。
    • Flask-SQLAlchemy:作为Flask的扩展,它封装了SQLAlchemy的功能,使其更易于在Flask应用中使用。
  2. 优点
    • 面向对象编程:开发者可以通过Python对象来操作数据库,无需直接编写SQL语句。
    • 开发效率:通过ORM,开发者可以专注于业务逻辑的实现,而无需过多关注数据库操作的细节,从而提高开发效率。
    • 解耦与可移植性:实现了数据模型与数据库的解耦,使得更换数据库变得更加简单,无需修改业务代码。
  3. 安装与配置
    • 安装:通过pip命令安装Flask-SQLAlchemy和相应的数据库驱动(如pymysql用于MySQL)。
    • 配置:在Flask应用中配置数据库连接字符串(如SQLALCHEMY_DATABASE_URI),以及其他相关设置(如是否跟踪修改、是否输出SQL语句等)。
  4. 基本使用
    • 构建模型类:通过继承Flask-SQLAlchemy提供的基类(如db.Model),定义与数据库表对应的Python类。
    • 数据操作:包括增加数据、查询数据、修改数据和删除数据等,都可以通过模型类的方法来实现。
  5. 高级机制
    • 刷新数据:在某些情况下,可能需要手动刷新模型对象的状态,以确保其与数据库中的数据保持一致。
    • 多表查询:Flask-SQLAlchemy支持使用关系操作(如join)进行多表查询。
  6. 性能与可移植性
    • 性能:虽然ORM在一定程度上会带来性能损失(如对象与SQL之间的转换),但在大多数情况下,这种损失是可以接受的,且ORM对生产率的提升远远超过了这一丁点儿的性能降低。
    • 可移植性:SQLAlchemy支持多种数据库引擎,包括流行的MySQL、Postgres和SQLite等,因此使用Flask-SQLAlchemy的应用可以轻松地切换到不同的数据库。

        通过以上简介,可以看出Flask-SQLAlchemy是一个功能强大且易于使用的Flask扩展,它使得在Flask应用中进行数据库操作变得更加简单和高效。


代码实现

exts.py文件

# 扩展放在独立文件供其它地方进行引用,可有效防止循环导包问题
from flask_sqlalchemy import SQLAlchemydb = SQLAlchemy()

 models.py文件

from exts import db
from datetime import datetime# 测试用户表
class User(db.Model):__tablename__ = 'user'id = db.Column(db.Integer, primary_key=True)account = db.Column(db.String(50), unique=True, nullable=False)password = db.Column(db.String(32), nullable=False)name = db.Column(db.String(50), nullable=False)avatar = db.Column(db.String(100),default='1.jpg')desc = db.Column(db.String(256))role = db.Column(db.String(50))create_time = db.Column(db.DateTime, default=datetime.now)

config.py配置文件

class Config():# 数据库配置信息host = '127.0.0.1'  # 主机port = 3306         # 端口user = 'root'       # MySQL账户pwd = '123456'      # MySQL密码database = 'test_2' # 使用的数据库名称# SQLALCHEMY_DATABASE_URI = 'sqlite:///XXX.db'  # sqlite数据库的配置(数据库名称:XXX.db)SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{user}:{pwd}@{host}:{port}/{database}?charset=utf8mb4"   # MySQL数据库SQLALCHEMY_ECHO = False  # 查询时是否显示原始SQL语句,为False不显示SQLALCHEMY_TRACK_MODIFICATIONS = False  # 跟踪数据库的修改,会增加性能消耗,不建议开启

main.py文件 

from flask import Flask
from config import Config
from exts import db
from models import Userapp = Flask(__name__)# 读取参数配置
app.config.from_object(Config)
# db对象
db.init_app(app)@app.route('/')
def index():# 进行查询操作users=User.query.all()print(users)users=[{'id':i.id,'account':i.account,'name':i.name} for i in users]return users@app.route('/add')
def add():# 模拟插入数据users=User(account='test@qq.com',name='test',password='test')db.session.add(users)db.session.commit()return 'add'if __name__ == '__main__':app.run(debug=True)

查询操作

页面输出

 

在数据库查看​


插入操作

页面输出

在数据库查看


总结

感谢观看,原创不易,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹🌹🌹

👍🏻也欢迎你,关注我。👍🏻

如有疑问,可在评论区留言哦~

这篇关于python flask配置数据库并进行orm操作 flask_sqlalchemy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069085

相关文章

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

给数据库的表添加字段

周五有一个需求是这样的: 原来数据库有一个表B,现在需要添加一个字段C,我把代码中增删改查部分进行了修改, 比如insert中也添入了字段C。 但没有考虑到一个问题,数据库的兼容性。因为之前的版本已经投入使用了,再升级的话,需要进行兼容处理,当时脑子都蒙了,转不过来,后来同事解决了这个问题。 现在想想,思路就是,把数据库的表结构存入文件中,如xxx.sql 实时更新该文件: CREAT

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana