Flask SQLAlchemy一对一,一对多的使用方法实践

下面我就详细讲解Flask SQLAlchemy一对一、一对多的使用方法实践的完整攻略,包含两条示例说明:

一、Flask SQLAlchemy一对一的使用方法实践

1.1 创建Flask项目

首先,我们需要创建一个Flask项目,可以使用以下命令来创建:

mkdir flask_one_to_one
cd flask_one_to_one
virtualenv venv
source venv/bin/activate
pip install Flask

1.2 创建数据库

我们创建一个名为example的数据库,在终端中输入以下命令:

createdb example

1.3 安装Flask SQLAlchemy

安装Flask SQLAlchemy模块,使用以下命令:

pip install Flask-SQLAlchemy

1.4 创建模型

创建一对一的关联关系模型,创建两个表,一个是学生表,一个是地址表。每个学生都有一个地址。

首先,在models.py文件中导入Flask SQLAlchemy模块,然后开始创建模型:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Student(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    address = db.relationship('Address', backref='student', uselist=False)

class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    street = db.Column(db.String(80), nullable=False)
    city = db.Column(db.String(80), nullable=False)
    state = db.Column(db.String(80), nullable=False)
    student_id = db.Column(db.Integer, db.ForeignKey('student.id'))

以上代码中,我们先创建了一个Flask SQLAlchemy的实例,即db对象。然后,我们分别创建了StudentAddress两个模型类。

在学生表Student中,我们定义了三个属性:idnameaddress。其中,id是我们的主键,必须要有。name是学生的名字,是一个字符串类型。最后一个属性是address,用来存储学生的地址信息。我们使用db.relationship函数来定义学生和地址表的一对一关系。我们可以看到,这个方法的默认值是uselist=True,也就是说,如果我们不特别指定的话,一个学生可以对应多个地址。但是在这个例子中,我们希望一个学生只有一个地址,所以我们将uselist设置为False

在地址表中Address,我们定义了四个属性:idstreetcitystate。和学生表一样,我们也定义了id作为主键。然后,我们增加了三个属性:streetcitystate,分别代表了学生的详细地址信息。最后一个属性是student_id,它用来建立学生和地址的联系。

1.5 初始化数据库

为了使模型生效,我们需要初始化数据库。在终端中,输入以下命令:

python
from models import db
db.create_all()

这个命令可以将我们定义的模型同步到具体的数据库之中。

1.6 创建视图

我们下一步需要创建视图,代码如下:

from flask import Flask, jsonify
from models import db, Student, Address

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost/example'
db.init_app(app)

@app.route('/')
def index():
    return 'Welcome to the One-to-One Example App!'

@app.route('/add_student/<string:name>/<string:street>/<string:city>/<string:state>', methods=['PUT'])
def add_student(name, street, city, state):
    student = Student(name=name)
    address = Address(street=street, city=city, state=state)
    student.address = address
    db.session.add(student)
    db.session.commit()
    return jsonify({'student_id': student.id})

以上代码中,我们创建了两个Flask路由,一个是/根路由,返回一个欢迎信息;另一个是/add_student添加学生信息的路由。我们在这里演示了如何向学生表和地址表同时插入数据,并且建立一对一的关系。

1.7 运行Flask应用

最后,我们使用以下命令启动应用:

export FLASK_APP=app.py
flask run

在浏览器中,我们可以访问http://127.0.0.1:5000/,应该可以看到Welcome to the One-to-One Example App!的欢迎信息,然后,我们可以使用以下命令向学生和地址表中添加数据:

curl -X PUT http://127.0.0.1:5000/add_student/Boinao/101 Broadway/New York/NY

这个命令可以向StudentAddress表中添加一名学生Boinao,并且设置他的地址为101 Broadway,New York,NY,此处命令中的参数是用/分隔的

二、Flask SQLAlchemy一对多的使用方法实践

2.1 创建Flask项目

同样地,我们需要先创建一个Flask项目。在这个例子中,我们创建了一个名为flask_one_to_many的文件夹,并进入文件夹。

mkdir flask_one_to_many
cd flask_one_to_many

2.2 创建数据库

我们需要创建一个名为example的数据库:

createdb example

2.3 安装Flask SQLAlchemy

安装Flask SQLAlchemy模块,使用以下命令:

pip install Flask-SQLAlchemy

2.4 创建模型

创建一对多的关联关系模型。创建两个表,一个是学生表,一个是课程表。一个学生可以选修多门课。

models.py文件中导入Flask SQLAlchemy模块,然后开始创建模型:

from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

db = SQLAlchemy()

class Student(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    courses = db.relationship('Course', backref='student')

class Course(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
    student_id = db.Column(db.Integer, db.ForeignKey('student.id'))

以上代码中,我们创建了两个表,一个是Student,一个是Course,分别代表学生和课程。

在学生表Student中,我们定义了两个属性:idname。其中,id是我们的主键,必须要有。name是学生的名字,是一个字符串类型。最后一个属性是courses,用来存储学生选修的所有课程信息。我们使用db.relationship函数来定义学生和课程表的一对多关系。

在课程表中Course,我们定义了四个属性:idnamedatestudent_id。和学生表一样,我们也定义了id作为主键。然后,我们增加了三个属性:namedatestudent_id,分别代表课程的名称,上课时间和学生的ID。最后,我们使用db.ForeignKey函数建立了学生和课程表的关联。

2.5 初始化数据库

为了使模型生效,我们需要初始化数据库。在终端中,输入以下命令:

python
from models import db
db.create_all()

2.6 创建视图

我们下一步需要创建视图,代码如下:

from flask import Flask, jsonify
from models import db, Student, Course

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost/example'
db.init_app(app)

@app.route('/')
def index():
    return 'Welcome to the One-to-Many Example App!'

@app.route('/add_course/<string:name>/<int:student_id>', methods=['PUT'])
def add_course(name, student_id):
    course = Course(name=name, student_id=student_id)
    db.session.add(course)
    db.session.commit()
    return jsonify({'course_id': course.id})

@app.route('/add_student/<string:name>', methods=['PUT'])
def add_student(name):
    student = Student(name=name)
    db.session.add(student)
    db.session.commit()
    return jsonify({'student_id': student.id})

以上代码中,我们创建了两个Flask路由,一个是/根路由,返回一个欢迎信息;另外两个是/add_course/add_student添加学生和课程的路由。

/add_student路由中,我们向Student表中添加一名学生。在/add_course路由中,我们向Course表中添加一门课,并且将这门课程和相应的学生ID关联起来。我们可以看到,这里使用了student_id参数来指定学生的ID。

2.7 运行Flask应用

最后,我们使用以下命令启动应用:

export FLASK_APP=app.py
flask run

在浏览器中,我们可以访问http://127.0.0.1:5000/,应该可以看到Welcome to the One-to-Many Example App!的欢迎信息。然后,我们可以使用以下命令向学生和课程表中添加数据:

curl -X PUT http://127.0.0.1:5000/add_student/Boinao
curl -X PUT http://127.0.0.1:5000/add_course/Math/1

这两个命令可以分别向StudentCourse表中添加一名学生Boinao和一门数学课程,并且将这门课程和学生Boinao关联起来。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flask SQLAlchemy一对一,一对多的使用方法实践 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • python-Web-flask-视图内容和模板知识点西宁街

    下面就针对“python-Web-flask-视图内容和模板知识点西宁街”的完整攻略进行详细讲解,其中包含两个示例说明。 标题 1. 概述 Flask 是一个轻量级 Web 开发框架,其在视图与模板的处理方面有独特的设计思想和使用方法。 视图(View)是一种用于处理请求并返回响应的函数或方法,而模板(Template)则是一种静态文件,用于构建动态生成的 …

    Flask 2023年5月15日
    00
  • 浅谈flask中的before_request与after_request

    前言 Flask是一个轻量级的Python Web框架,由于其简单易用的特点得到了众多web开发者的追捧。而本文将主要探讨Flask中的before_request和after_request等钩子函数,这两个函数可以让你在对用户请求进行处理和返回响应之前与之后执行你自己的方法,从而让你在请求与响应处理过程中灵活地添加一些钩子函数。本文将详细讨论before…

    Flask 2023年5月16日
    00
  • Angular 应用技巧总结

    Angular 应用技巧总结 前言 Angular 是一款流行的前端框架,它提供了丰富的功能和工具,可用于快速构建现代 Web 应用程序。本文将分享一些 Angular 应用技巧,旨在帮助开发人员更好地使用 Angular。 使用 Reactive Forms 使用 Reactive Forms 可以更好地控制表单的数据流和验证规则,并且能够在多个组件之间共…

    Flask 2023年5月15日
    00
  • Flask使用SocketIO实现WebSocket与Vue进行实时推送

    针对这个问题,我会提供一个详细的攻略,分为以下几个部分: 简介 准备工作 示例一:使用Flask-SocketIO实现WebSocket实时推送 示例二:使用Vue.js进行实时推送展示 总结 接下来,我将详细讲解每一个部分。 1. 简介 在Web开发中,实时推送是一个非常重要的功能,例如聊天室、股票行情、即时通讯等,这些功能都需要实时地使用WebSocke…

    Flask 2023年5月16日
    00
  • 将python项目打包成exe与安装包的全过程

    将 Python 项目打包成 exe 需要使用 pyinstaller 工具。pyinstaller 是一个非常常用的 Python 打包工具,可以将 Python 代码打包成可执行文件,支持 Windows、Linux 和 Mac OS 等多个平台。下面是将 Python 项目打包成 exe 的完整攻略: 安装 pyinstaller 在命令行中执行以下命…

    Flask 2023年5月16日
    00
  • Pyhon Flask框架:第一个Flask程序

    下面是Python Flask框架第一个Flask程序的完整攻略。 第一步:安装Flask 首先,我们需要在本地安装Flask。安装Flask的方式很简单,只需要在命令行中输入以下命令即可: pip install Flask 第二步:创建Flask应用 接下来,我们需要在本地创建一个Flask应用。在你选择的文件夹中创建一个名为“app.py”的文件,并用…

    Flask 2023年5月15日
    00
  • 如何将python代码生成API接口

    下面是详细的“如何将python代码生成API接口”的完整攻略: 1. 安装Flask 首先,我们需要安装一个轻量级的Python web框架 Flask,它可以帮我们快速构建一个 RESTful API。安装命令如下: pip install Flask 2. 编写Python代码 在安装好 Flask 后,我们需要编写 Python 代码,将其转化为网络…

    Flask 2023年5月16日
    00
  • python中如何使用虚拟环境

    使用虚拟环境可以避免不同项目之间的依赖冲突,提高项目开发和部署的可靠性。下面是Python中使用虚拟环境的完整攻略: 步骤 1: 安装虚拟环境 要使用虚拟环境,我们需要先安装虚拟环境模块venv。通常情况下,Python3自带了venv模块,因此你不需要额外安装。如果你使用的是Python2,则可以使用virtualenv来创建虚拟环境。以下是在Linux或…

    Flask 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部