如何理解Flask中的ORM技术

Flask中的ORM(Object-Relational Mapping,对象关系映射)是一种编程技术,用于在关系数据库和对象程序语言之间转换数据。在Flask框架中,最常用的ORM工具是SQLAlchemy,通过Flask-SQLAlchemy扩展集成到Flask应用中。以下是Flask中ORM的详细介绍:

  1. 安装Flask-SQLAlchemy

    要使用Flask的ORM功能,首先需要安装Flask-SQLAlchemy扩展。可以通过pip安装:

    pip install flask-sqlalchemy
    

    如果需要连接特定的数据库,比如MySQL,还需要安装对应的数据库驱动,例如:

    pip install mysqlclient
    
  2. 配置数据库URI

    在Flask应用中,需要配置数据库连接URI,告诉SQLAlchemy如何连接到数据库。例如,对于SQLite数据库,配置可能如下:

    python 复制代码
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'

    对于MySQL数据库,配置可能如下:

    python 复制代码
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/dbname'
  3. 初始化SQLAlchemy

    在Flask应用中,导入并初始化SQLAlchemy:

    python 复制代码
    from flask_sqlalchemy import SQLAlchemy
    db = SQLAlchemy(app)
  4. 定义模型

    通过创建类来定义数据模型,这些类继承自db.Model。每个类对应数据库中的一个表,类的属性对应表的列。例如:

    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)
  5. 创建数据库和表

    在定义了模型后,可以使用db.create_all()来创建数据库和表:

    python 复制代码
    with app.app_context():
        db.create_all()
  6. CRUD操作

    • 创建(Create) :创建一个新的记录实例,并将其添加到会话中,然后提交会话以保存到数据库。

      python 复制代码
      new_user = User(username='john_doe', email='john@example.com')
      db.session.add(new_user)
      db.session.commit()
    • 读取(Read) :查询数据库中的记录。

      python 复制代码
      users = User.query.all()  # 获取所有用户
      user = User.query.get(user_id)  # 通过主键获取单个用户
    • 更新(Update) :修改记录的字段值,并提交会话以更新数据库。

      python 复制代码
      user = User.query.get(user_id)
      user.username = 'new_username'
      db.session.commit()
    • 删除(Delete) :从数据库中删除记录。

      python 复制代码
      user = User.query.get(user_id)
      db.session.delete(user)
      db.session.commit()
  7. 查询操作

    SQLAlchemy提供了丰富的查询功能,可以执行基本和复杂查询,包括排序和分页:

    python 复制代码
    users = User.query.order_by(User.username).paginate(page=1, per_page=10)
  8. 数据库迁移

    使用Flask-Migrate扩展管理数据库迁移,它基于Alembic。可以通过以下命令初始化迁移环境、创建迁移脚本和应用迁移:

    shell 复制代码
    flask db init
    flask db migrate -m "Initial migration."
    flask db upgrade
  9. 执行原始SQL

    虽然推荐使用ORM方式操作数据库,但在某些情况下可能需要执行原始SQL语句。可以通过db.session.execute()方法执行:

    python 复制代码
    result = db.session.execute('SELECT * FROM user')

通过上述步骤,可以在Flask应用中利用ORM进行数据库操作,从而提高开发效率并减少直接编写SQL语句带来的风险。

相关推荐
计算机毕设指导614 分钟前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
paopaokaka_luck32 分钟前
[371]基于springboot的高校实习管理系统
java·spring boot·后端
The_Ticker1 小时前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
Elastic 中国社区官方博客1 小时前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
企鹅侠客1 小时前
ETCD调优
数据库·etcd
Json_181790144801 小时前
电商拍立淘按图搜索API接口系列,文档说明参考
前端·数据库
傻啦嘿哟1 小时前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
B站计算机毕业设计超人1 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
煎饼小狗1 小时前
Redis五大基本类型——Zset有序集合命令详解(命令用法详解+思维导图详解)
数据库·redis·缓存
永乐春秋2 小时前
WEB-通用漏洞&SQL注入&CTF&二次&堆叠&DNS带外
数据库·sql