首页 > 数据库 >在 Flask 中使用数据库 允许我们使用面向对象的方式来操作数据库 Flask 中使用表单的方法

在 Flask 中使用数据库 允许我们使用面向对象的方式来操作数据库 Flask 中使用表单的方法

时间:2023-12-30 10:32:47浏览次数:41  
标签:form Flask 数据库 db 表单 使用 com

在 Flask 中使用数据库,你可以使用 ORM(对象关系映射)技术,它允许我们使用面向对象的方式来操作数据库,而不需要直接编写 SQL 语句¹。以下是一些基本步骤:

  1. 安装依赖:首先,我们需要安装 Flask 和 ORM 库的依赖。Flask 提供了多个 ORM 库的选择,例如 SQLAlchemy、Peewee 和 SQLObject 等。在这里,我们将以 SQLAlchemy 为例进行说明。使用以下命令来安装所需的依赖¹:
pip install flask
pip install flask_sqlalchemy
  1. 配置数据库连接:在 Flask 应用程序中使用 ORM 之前,我们需要配置数据库连接。通常,你需要指定数据库的 URL,其中包括数据库类型、用户名、密码、主机和端口等信息。这些配置项可以存储在配置文件中,也可以直接在应用程序代码中硬编码¹。以下是一个示例配置文件 config.py 的内容¹:
# config.py
SQLALCHEMY_DATABASE_URI = 'sqlite:///mydatabase.db'
SQLALCHEMY_TRACK_MODIFICATIONS = False
  1. 创建数据库模型:在 Flask 中使用 ORM,我们需要定义数据库模型。模型代表了数据库中的表,每个模型类对应一个表。我们可以在模型类中定义属性和方法,以便与数据库进行交互¹。以下是一个示例模型的代码¹:
# models.py
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

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 '<User %r>' % self.username
  1. 初始化应用程序和数据库:在应用程序的入口文件中,我们需要初始化 Flask 应用程序和数据库。我们还需要将数据库与应用程序关联起来¹。以下是一个示例应用程序的代码¹:
# app.py
from flask import Flask
from config import SQLALCHEMY_DATABASE_URI
from models import db

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI
db.init_app(app)

@app.route('/')
def hello():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()
  1. 使用 ORM 进行数据库操作:使用 ORM 进行数据库操作非常简单。我们可以通过创建模型类的实例来表示数据库中的记录,并使用模型类的方法来操作这些记录¹。以下是一些常见的数据库操作示例¹:
# 添加记录
from models import db, User

user = User(username='john', email='[email protected]')
db.session.add(user)
db.session.commit()

# 查询记录
from models import User

users = User.query.all()
for user in users:
    print(user.username, user.email)

# 更新记录
from models import db, User

user = User.query.filter_by(username='john').first()
user.email = '[email protected]'
db.session.commit()

# 删除记录
from models import db, User

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

以上就是在 Flask 中使用数据库的基本步骤。如果你想了解更多关于 Flask 的信息,可以参考这些文章¹²⁴⁵。希望这些信息对你有所帮助!源: 与必应的对话, 2023/12/30

(1) Flask入门(七):Flask数据库操作 - 知乎. https://zhuanlan.zhihu.com/p/639249486.

(2) 【一周掌握Flask框架学习笔记】Flask中使用数据库(使用Flask-SQLAlchemy管理数据库) - 腾讯云. https://cloud.tencent.com/developer/article/1860117.

(3) Flask中如何使用MySQL数据库? - eliwang - 博客园. https://www.cnblogs.com/eliwang/p/14257226.html.

(4) Flask中通过PyMySQL模块让操作mysql数据库方法(一) - 知乎. https://zhuanlan.zhihu.com/p/53267940.

(5) Flask框架(数据库操作) - 知乎. https://bing.com/search?q=Flask+中使用数据库的方法.

(6) github.com. https://github.com/tomwhross/budget/tree/c6382d1e03d2264df6306145563fc390c8def30f/models.py.

(7) github.com. https://github.com/R-36/projectBack/tree/5c1db5f44c3e161fd23fa51458c7840cd6bcede1/app.py.

(8) github.com. https://github.com/jhumphreys-p/StartWars-REST-API-Flask-Python/tree/0ee0a86035a9a7ea19d8d34489571f481060f9ea/docs%2F_QUICK_START.md.

(9) github.com. https://github.com/marcverhagen/CS138A/tree/41b6e788944e1cfee92851a9b464d68f8dd30621/code%2Fweek6-databases%2Fexample-alchemy%2Fblog_users.py.

(10) github.com. https://github.com/v1c77/test/tree/09d861d076a1ff03152e27f5fb29e5c90144d0d1/glist_stackover_test%2Fhow_to_mock_sqlalchemy_create_time.py.

(11) github.com. https://github.com/mycampground001/TIL/tree/73ac855cfdf5ecc4ee0cc810a939c288f7df2b50/flask_ORM.md.

在 Flask 中使用表单,你可以使用 Flask-WTF 扩展,它提供了一种简单而强大的方式来处理表单¹²。以下是一些基本步骤:

  1. 安装 Flask-WTF:首先,我们需要安装 Flask 和 Flask-WTF 的依赖。使用以下命令来安装所需的依赖¹:
pip install flask
pip install flask_wtf
  1. 定义表单类:在 Flask 中,我们需要定义一个表单类,该类继承自 flask_wtf.FlaskForm。在表单类中,你可以定义各种字段和验证器¹。以下是一个示例表单类的代码¹:
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

class MyForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired()])
    submit = SubmitField('Submit')
  1. 渲染表单:在视图函数中,你需要将表单实例传递给模板,并在模板中渲染表单¹。以下是一个示例视图函数的代码¹:
from flask import Flask, render_template
from forms import MyForm

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    if form.validate_on_submit():
        name = form.name.data
        email = form.email.data
        # 进行数据处理
        return f'Thank you for submitting the form, {name}!'
    return render_template('index.html', form=form)

if __name__ == '__main__':
    app.run()
  1. 创建模板:在 templates 文件夹下创建模板,例如 index.html,并使用 render_template() 方法来渲染模板¹。以下是一个示例模板的内容¹:
<!-- templates/index.html -->
<!DOCTYPE html>
<html>
<head>
    <title>My Form</title>
</head>
<body>
    <h1>My Form</h1>
    <form method="post">
        {{ form.csrf_token }}
        <div>
            {{ form.name.label }} {{ form.name(size=20) }}
            {% if form.name.errors %}
            <ul>
                {% for error in form.name.errors %}
                <li>{{ error }}</li>
                {% endfor %}
            </ul>
            {% endif %}
        </div>
        <div>
            {{ form.email.label }} {{ form.email(size=20) }}
            {% if form.email.errors %}
            <ul>
                {% for error in form.email.errors %}
                <li>{{ error }}</li>
                {% endfor %}
            </ul>
            {% endif %}
        </div>
        <div>
            {{ form.submit() }}
        </div>
    </form>
</body>
</html>

以上就是在 Flask 中使用表单的基本步骤。如果你想了解更多关于 Flask 的信息,可以参考这些文章¹²³⁴。希望这些信息对你有所帮助!

源: 与必应的对话, 2023/12/30

https://blog.csdn.net/guyyihuh/article/details/121012265

(1) Flask入门(六):Flask表单处理 - 知乎. https://zhuanlan.zhihu.com/p/639229993.

(2) flask入门之表单提交_flask表单提交-CSDN博客. https://blog.csdn.net/guyyihuh/article/details/121012265.

(3) Flask表单:表单的创建与渲染 - 知乎. https://zhuanlan.zhihu.com/p/23605789.

(4) Flask Web 表单的介绍与使用 - 掘金. https://juejin.cn/post/7094906020157194270.

标签:form,Flask,数据库,db,表单,使用,com
From: https://blog.51cto.com/u_16055028/9039283

相关文章

  • 基于JFinal的数据库配置
    参考——https://blog.csdn.net/weixin_42579328/article/details/89490760 1、创建数据表:CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(20)NOTNULL,`pwd`varchar(20)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=......
  • 使用LOTR合并检索提高RAG性能
    RAG结合了两个关键元素:检索和生成。它首先使用语义搜索等高级技术来浏览大量数据,包括文本、图像、音频和视频。RAG的本质在于它能够检索相关信息,然后作为下一阶段的基础。生成组件利用大型语言模型的能力,解释这些数据块,制作连贯的、类似人类的响应。与传统的生成模型相比,这个过程......
  • 在vue中使用router时所需要的配置
    router.jsimport{createRouter,createWebHistory}from'vue-router';//2.定义路由组件importHomefrom"../views/Home.vue"importLoginfrom"../views/Login.vue"//3.定义路由-配置路由走向constroutes=[{path:"/&qu......
  • PyAutoGUI使用
    让所有GUI都自动化-PyAutoGUI(GUI自动化工具) PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,利用它可以实现自动化任务,再也不用担心有重复枯燥的任务了。安装:pipinstallpyautogui或在pipy直接下载install在Py3中安装提示:Collecting......
  • PLSQL打开数据库对象乱码
    1.问题描述   PLSQL打开远程数据库对象后,发现其中的中文内容为问号乱码.    2.处理方式   这种情况一般是我们初次安装PLSQL后,未在本地配置与数据库一致的NLS_LANG环境变量,导致远端获取的对象字符集在本地解析时无法识别。2.1远程数据库配置情况   使用......
  • 空结构体的作用和使用场景
    1.不占空间内存在Go中,可以使用unsafe.Sizeof计算出一个数据类型实例需要占用的字节数。packagemainimport("fmt""unsafe")funcmain(){fmt.Println(unsafe.Sizeof(struct{}{}))} 可以看到,Go中空结构体struct{}是不占用内存空间,不像C/C++......
  • [python] 基于Dataset库操作数据库
    dataset库是Python中一个用于操作数据库的简单库,它提供了一种简洁的方式与各种关系型数据库进行交互,例如SQLite、MySQL、PostgreSQL等。你可以使用dataset库来执行查询、插入、更新和删除操作,而无需编写复杂的SQL语句。dataset库适用于小规模的数据存储和查询场景,相比csv和json文......
  • ASP.NET Core 6(.NET 6) Program.cs中使用读取appsettings.json配置文件
    ​ 在ASP.NETCore6(.NET6)中,可以使用Json格式的appsettings.json配置文件来配置应用程序,用于存储应用程序的配置信息,方便我们灵活的配置应用程序。本文主要介绍Program.cs中,使用读取appsettings.json配置文件的方法,以及相关的示例代码。1、通过配置实体类的方式1)配置实体......
  • openGauss学习笔记-177 openGauss 数据库运维-逻辑复制-逻辑解码-逻辑解码概述
    openGauss学习笔记-177openGauss数据库运维-逻辑复制-逻辑解码-逻辑解码概述177.1功能描述openGauss对数据复制能力的支持情况为:支持通过数据迁移工具定期向异构数据库(如Oracle等)进行数据同步,不具备实时数据复制能力。不足以支撑与异构数据库间并网运行实时数据同步的诉求。......
  • openGauss学习笔记-178 openGauss 数据库运维-逻辑复制-逻辑解码-使用SQL函数接口进行
    openGauss学习笔记-178openGauss数据库运维-逻辑复制-逻辑解码-使用SQL函数接口进行逻辑解码openGauss可以通过调用SQL函数,进行创建、删除、推进逻辑复制槽,获取解码后的事务日志。178.1前提条件逻辑日志目前从主机节点中抽取,默认关闭SSL连接,如果进行逻辑复制,需要先配置GUC......