Python中的ORM框架Flask-SQLAlchemy实战

orm(object-relational mapping)是一种编程技术,它把关系型数据库中的表格数据映射到编程语言中的对象,使得程序开发者可以用面向对象的方式对数据库进行操作。flask-sqlalchemy是一款强大的orm框架,能极大地简化python程序对于关系型数据库的操作。

本文将会通过一个实例,详细介绍Flask-SQLAlchemy框架的使用方法。

环境配置

在学习Flask-SQLAlchemy之前,我们需要先安装Flask及SQLAlchemy模块。在Python环境下使用pip命令即可安装。

pip install Flask
pip install SQLAlchemy

数据库配置

配置MySQL数据库作为项目的持久化存储,在创建Flask-SQLAlchemy对象时,传递如下参数即可:

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

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

第一个参数:flask应用实例

第二个参数:数据库连接URI

app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘mysql://root:password@localhost:3306/test’

关闭SQLALCHEMY_TRACK_MODIFICATIONS选项,提高程序运行效率

app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS’] = False

初始化db对象

db = SQLAlchemy(app)

调用app.config来设置Flask应用实例的配置参数,其中SQLALCHEMY_DATABASE_URI参数用于指定连接的数据库类型、用户名、密码、IP地址、端口号、数据库名称等信息。

ORM实现

定义数据模型

首先,我们需要定义数据模型,即ORM的映射对象,这里我们以学生信息为例,定义一个Student类:

from datetime import datetime
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

SQLAlchemy ORM设计模型

class Student(db.Model):

# 定义表名__tablename__ = 'student'# 定义表结构,其中id为主键,自增长id = db.Column(db.Integer, primary_key=True, autoincrement=True)name = db.Column(db.String(20), nullable=False)gender = db.Column(db.String(2), nullable=False)birthday = db.Column(db.Date, default=datetime.now())address = db.Column(db.String(200), nullable=False)# 类对象序列化成字典def to_dict(self):    return {c.name: getattr(self, c.name, None) for c in self.__table__.columns}

登录后复制

在Student类中,我们定义了__tablename__、id、name、gender、birthday、address这些表结构。其中__tablename__用于指定表名,id用于指定主键并自增长,name、gender、birthday、address这些字段用于存储学生姓名、性别、生日和住址的信息。

增删改查操作

接下来,我们实现增删改查操作:

(1) 添加学生信息

@app.route(‘/add’, methods=[‘POST’])
def add_student():

student = Student()student.name = request.form.get('name')student.gender = request.form.get('gender')student.birthday = datetime.strptime(request.form.get('birthday'), '%Y-%m-%d').date()student.address = request.form.get('address')db.session.add(student)db.session.commit()return jsonify({'code': 200, 'msg': 'add student success.'})

登录后复制

首先通过request.form.get()获取提交的表单数据,然后创建Student对象并设置属性值,最后通过db.session.add()添加对象到数据库中,并通过db.session.commit()提交事务。

(2) 删除学生信息

@app.route(‘/delete/’, methods=[‘DELETE’])
def delete_student(id):

student = Student.query.get(id)if student:    db.session.delete(student)    db.session.commit()    return jsonify({'code': 200, 'msg': 'delete student success.'})else:    return jsonify({'code': 404, 'msg': 'student not found.'})

登录后复制

传递学生id参数,通过query.get()方法获取到该学生的实例,并使用db.session.delete()方法将其从数据库中删除,并通过db.session.commit()提交事务。

(3) 修改学生信息

@app.route(‘/update/’, methods=[‘PUT’])
def update_student(id):

student = Student.query.get(id)if student:    student.name = request.form.get('name')    student.gender = request.form.get('gender')    student.birthday = datetime.strptime(request.form.get('birthday'), '%Y-%m-%d').date()    student.address = request.form.get('address')    db.session.commit()    return jsonify({'code': 200, 'msg': 'update student success.'})else:    return jsonify({'code': 404, 'msg': 'student not found.'})

登录后复制

同样根据学生id参数获取学生实例,在修改学生信息后,使用db.session.commit()提交事务。

(4) 查询学生信息

@app.route(‘/search’)
def search_student():

students = Student.query.all()if students:    return jsonify({'code': 200, 'msg': 'search student success.', 'data': [student.to_dict() for student in students]})else:    return jsonify({'code': 404, 'msg': 'student not found.'})

登录后复制

使用query.all()方法查询到Student表中所有的学生信息,并通过list comprehension将学生对象列表转化为字典列表返回。

总结

Flask-SQLAlchemy是一个非常强大的ORM框架,能够使Python编写数据库操作的代码更加简单和易读。本文通过一个实例,深入介绍了Flask-SQLAlchemy的使用方法。

在实际开发中,我们可以按照类似本文的方式进行数据模型的定义和增删改查操作的实现。这些操作的复杂度都很低,运用Flask-SQLAlchemy框架能够让我们在提高开发效率的同时,降低程序维护成本。

以上就是Python中的ORM框架Flask-SQLAlchemy实战的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2233460.html

(0)
上一篇 2025年2月26日 16:51:02
下一篇 2025年2月23日 00:33:27

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python中的自然语言处理实例:情感分析

    python中的自然语言处理实例:情感分析 随着人工智能的发展,自然语言处理(NLP)在各个领域中越来越受到关注。其中,情感分析是NLP应用的一个重要方向。情感分析可以用于分析用户对产品、服务或事件的情感倾向,帮助企业更好地理解消费者需求,…

    编程技术 2025年2月26日
    200
  • 如何用Python实现归并排序

    归并排序是一种经典的排序算法,其核心思想是将待排序数组分成若干个子数组,对这些子数组进行排序,最后再将排好序的子数组合并成一个有序数组。归并排序是一种效率较高的排序算法,其时间复杂度为o(nlogn)。 在本文中,我们将讲解如何用Pytho…

    编程技术 2025年2月26日
    200
  • Python中的列表推导式详解

    python中的列表推导式是一种方便快捷的语法,可以快速地生成列表。它的语法形式类似于数学中的集合推导式,语义也相似,因而易于理解和使用。下面将详细介绍python中的列表推导式。 一、基本语法结构 列表推导式的基本语法结构为: [ exp…

    编程技术 2025年2月26日
    200
  • Python中的ORM框架Django ORM详解

    django orm是python中经典的orm框架,它是django web框架的一部分,为数据库操作提供了便利的方式。orm全称为对象关系映射,它可以将关系型数据库中的表与python中的类进行映射,从而简化了开发过程,提高了开发效率。…

    编程技术 2025年2月26日
    200
  • Python中的自然语言处理实例:词向量

    python自然语言处理(nlp)是一种广泛使用的技术,用于从人类语言数据中提取和分析有意义的信息。其中一个重要的nlp应用是词向量(word embeddings),它是一种将单词转换为数字向量的技术,将单词的语义表示为向量空间中的实数值…

    编程技术 2025年2月26日
    200
  • Python中的手写数字识别实例

    python是一门非常强大的编程语言,广泛应用于数据分析、机器学习、图像处理等领域。在机器学习领域中,手写数字识别是一个非常重要的问题,可以应用于验证码识别、自动驾驶、语音识别等多个领域。在本文中,我们将介绍如何用python实现手写数字识…

    编程技术 2025年2月26日
    200
  • Python中的Web开发:Tornado实战

    随着互联网的兴起,web开发在it领域中变得越来越重要。而python作为一种注重开发效率的高级编程语言,也开始在web开发领域广受欢迎。其中,tornado这种轻量级网络框架在python中的地位独特,它采用了基于异步io的方式,使得其对…

    编程技术 2025年2月26日
    200
  • Python中的计算机视觉实例:手势识别

    随着计算机视觉技术的发展,越来越多的人开始探索如何使用计算机视觉来处理图片和视频数据。而python作为一门强大的编程语言,也在计算机视觉领域得到了广泛应用。 本文将介绍如何使用Python来实现一个手势识别的实例。我们将通过OpenCV库…

    编程技术 2025年2月26日
    200
  • Python中的自然语言处理实例:机器翻译

    随着全球化的加深,不同民族、不同语言之间的联系显得愈加密切。在这样的趋势下,语言障碍问题成为制约交流的重要因素。因此,开发一种能够进行语言翻译的程序既能避免误解,又能节省时间,对于推动人类社会的发展具有重要意义。近年来,随着人工智能领域的发…

    编程技术 2025年2月26日
    200
  • Python中的Web开发:Django实战

    python已成为一门越来越流行的编程语言,而随着web应用程序的普及,使用python进行web开发也变得越来越流行。django是一种基于python的web框架,它是由一群渴望开发高质量web应用程序的开发者所创造的。django以m…

    编程技术 2025年2月26日
    200

发表回复

登录后才能评论