0

0

Python中的ORM框架Flask-SQLAlchemy详解

WBOY

WBOY

发布时间:2023-06-09 23:48:07

|

2693人浏览过

|

来源于php中文网

原创

flask-sqlalchemy是一个基于sqlalchemy的orm(object relational mapping)框架,适用于flask应用程序。orm框架屏蔽了底层数据库的操作,提供了一个python编程接口,使得开发者可以直接使用python代码操作数据库,而不用写sql语句。

本文将详细介绍Flask-SQLAlchemy框架的使用,包括如何连接数据库、创建表、插入、更新、删除数据和查询数据等操作。

连接数据库

在使用Flask-SQLAlchemy之前,首先需要在Flask中配置数据库连接。具体方式如下:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库连接信息'  # 数据库连接信息
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # 是否追踪对象的修改
db = SQLAlchemy(app)

其中,SQLALCHEMY_DATABASE_URI是数据库连接信息。如果使用的是SQLite,则格式为sqlite:///文件路径;如果是MySQL,则格式为mysql+pymysql://用户名:密码@主机名/数据库名(pymysql是用于连接MySQL的Python库);如果是PostgreSQL,则格式为postgresql://用户名:密码@主机名/数据库名

立即学习Python免费学习笔记(深入)”;

SQLALCHEMY_TRACK_MODIFICATIONS表示是否追踪对象的修改。如果设置为True,则会在每次请求结束时检查对象的状态并写入数据库。该功能可以用于调试和性能优化,但会带来一些开销。因此,在生产环境中建议关闭它。

创建表

Flask-SQLAlchemy支持通过Python类来定义表。每个类对应一个数据库表,类中的属性对应数据库表的字段。

下面是一个示例:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '' % self.username

其中,db.Model是所有模型类的基类,表示这个类是一个数据库模型。id、username、email是该表的字段,其中id是主键,username和email都是唯一的,且不能为空。__repr__()方法用于打印对象,方便调试。

要创建这个表,只需要执行以下命令:

from app import db
db.create_all()

这将在数据库中创建一个名为User的表。如果已经存在,则不会重复创建。如果有多个表需要创建,则可以在同一处使用db.create_all()命令创建。

插入数据

向数据库中插入数据,只需要创建一个类实例,并调用add()和commit()方法。

from app import db
from app.models import User

user = User(username='test', email='test@test.com')
db.session.add(user)
db.session.commit()

上述代码中,首先创建了一个User对象,然后将其添加到数据库会话中。最后,调用commit()方法提交事务,将数据存入数据库。

更新数据

更新数据和插入数据类似,只需要先查询出要更新的数据、修改其属性并提交即可。

from app import db
from app.models import User

user = User.query.filter_by(username='test').first()
user.email = 'new_test@test.com'
db.session.commit()

上述代码中,首先根据用户名查询到了要更新的User对象,然后修改了email属性并提交了修改。

Melodrive
Melodrive

Melodrive -一个AI音乐引擎,根据用户的情绪状态和喜好生成个性化的音乐。

下载

删除数据

和更新数据类似,只需要先查询出要删除的数据,然后调用delete()方法进行删除。

from app import db
from app.models import User

user = User.query.filter_by(username='test').first()
db.session.delete(user)
db.session.commit()

上述代码中,首先根据用户名查询到了要删除的User对象,然后调用delete()方法进行删除。

查询数据

Flask-SQLAlchemy支持多种查询方式,包括按条件查询、排序、分页等。

按条件查询

按条件查询是最常见的方式。可以使用query.filter()方法指定查询条件。示例代码如下:

from app import db
from app.models import User

# 查询所有
users = User.query.all()

# 条件查询
users = User.query.filter_by(username='test').all()

上述代码中,第一行代码查询了User表中的所有数据;第二行代码按照username='test'条件查询出数据。

排序查询

可以使用order_by()方法对查询结果进行排序。示例代码如下:

from app import db
from app.models import User

# 按名称排序(升序)
users = User.query.order_by(User.username).all()

# 按名称排序(降序)
users = User.query.order_by(User.username.desc()).all()

上述代码中,第一行代码按照username升序排列查询结果;第二行代码按照username降序排列查询结果。

分页查询

可以使用paginate()方法实现分页查询。示例代码如下:

from app import db
from app.models import User

# 每页2条,查询第1页
users = User.query.paginate(1, 2, False)

# 查询第一页
users = User.query.order_by(User.username).paginate(1, 10, False)

上述代码中,第一行代码查询了第1页的2条数据;第二行代码查询了按照username排序的第1页的10条数据。

总结

Flask-SQLAlchemy是一个强大的ORM框架,提供了强大的查询和操作数据库的接口,使得开发者可以快速方便地操作数据库。本文介绍了Flask-SQLAlchemy的使用,包括创建表、插入、更新、删除和查询数据。希望本文能够帮助读者更好地理解和应用Flask-SQLAlchemy。

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

11

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

59

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

84

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

38

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

17

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

157

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

163

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python Web框架Flask进阶视频教程
Python Web框架Flask进阶视频教程

共12课时 | 2.9万人学习

Python Web框架Flask入门视频教程
Python Web框架Flask入门视频教程

共7课时 | 2.6万人学习

Flask实战视频教程
Flask实战视频教程

共9课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号