Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程

yizhihongxing

下面我将为您详细介绍如何在Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程。

什么是Flask-SQLAlchemy

Flask-SQLAlchemy是Flask框架下的SQLAlchemy扩展,它简化了SQLAlchemy的使用,提供了更符合Flask特性的接口,使开发者能够更加便捷地管理数据库。

安装Flask-SQLAlchemy

在终端输入以下命令,安装Flask-SQLAlchemy:

pip install Flask-SQLAlchemy

在Flask应用中配置数据库

在Flask应用中使用Flask-SQLAlchemy管理数据库,需要配置数据库信息。编辑config.py文件,添加以下代码:

import os

basedir = os.path.abspath(os.path.dirname(__file__))

class Config:
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    @staticmethod    
    def init_app(app):
        pass

class DevelopmentConfig(Config):
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')

class TestingConfig(Config):
    TESTING = True
    SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \
        'sqlite://'

class ProductionConfig(Config):
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'data.sqlite')

config = {
    'development': DevelopmentConfig,
    'testing': TestingConfig,
    'production': ProductionConfig,

    'default': DevelopmentConfig
}

这个配置文件定义了不同环境下的配置,例如开发环境和生产环境的配置。其中,SQLALCHEMY_DATABASE_URI是数据库连接地址。

初始化数据库

在Flask应用中,需要在app/init.py文件中初始化数据库。添加以下代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config

db = SQLAlchemy()

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    db.init_app(app)

    # 其他代码

    return app

这个代码片段的含义是,使用create_app方法创建Flask应用,配置数据库、Flask-SQLAlchemy等基础设置。

创建数据模型

Flask-SQLAlchemy支持使用ORM方式创建数据模型,定义在app/models.py文件中。例如,我们创建一个用户模型,添加如下代码:

from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash,check_password_hash

db = SQLAlchemy()

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(64), unique=True, index=True)
    password_hash = db.Column(db.String(128))

    @property
    def password(self):
        raise AttributeError('password is not a readable attribute')

    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    def verify_password(self, password):
        return check_password_hash(self.password_hash, password)

这个模型定义了一个名为User的表和其所包含的字段:id、username、password_hash。

数据库迁移

为了改变数据模型和数据库结构,使用Flask-Migrate来进行数据库迁移。

在终端输入以下命令,安装Flask-Migrate:

pip install Flask-Migrate

在Flask应用中,创建一个名为migrations的目录,在其中添加迁移脚本。使用db命令行工具来创建迁移脚本:

flask db init
flask db migrate -m "initial migration"

上述命令会在migrations目录下创建一个versions目录,并在其中创建一个Python文件,包含了数据库迁移的脚本。

数据库操作示例

为了更好的理解如何使用Flask-SQLAlchemy操作数据库,这里提供两个示例。

插入用户记录

新建一个app/user.py文件,添加以下代码,表示往数据库中插入一个用户:

from app.models import User, db

def create_user(username, password):
    user = User(username=username, password=password)
    db.session.add(user)
    db.session.commit()

以上代码使用User模型创建一个User对象,并使用db.session.add()方法添加到数据库。最后调用db.session.commit()方法进行事务提交。

查询用户记录

新建一个app/user.py文件,添加以下代码,表示查询数据库中所有的用户:

from app.models import User, db

def query_users():
    users = User.query.all()
    return users

以上代码使用User模型的query属性查询出所有用户,并以Python列表的形式返回。在其他文件中调用该方法即可获取所有的用户记录。

总结

使用Flask-SQLAlchemy可以更加便捷地管理数据库,为Flask应用的开发提供有力支持。在实际应用中,需要按照上述步骤进行操作,同时还需要了解Superset相关的操作,建立Superset量化系统。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程 - Python技术站

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

相关文章

  • 详解 Flask 请求对象使用方法

    Flask 的请求对象(request)是在处理请求期间随请求上下文创建的。它允许您访问当前请求的数据,例如表单数据,URL 参数,请求头等。 下面是 Flask 请求对象的完整攻略: 导入 Flask 请求模块和 Flask 应用程序实例 from flask import Flask, request app = Flask(__name__) 请求上下…

    Flask 2023年3月13日
    00
  • Flask 数据库集成的介绍

    Flask 是一款轻量级的 Web 框架,不仅提供了方便的路由定义和模板引擎,还支持多种数据库集成。在此文中,我们将介绍 Flask 中几种常见数据库的集成方式。 Flask-SQLAlchemy Flask-SQLAlchemy 是 Flask 中使用最广泛的数据库集成扩展,它基于 SQLAlchemy 实现了对 Flask 框架的扩展,并提供了一系列更方…

    Flask 2023年5月15日
    00
  • 深入了解Python Flask框架之蓝图

    下面是“深入了解Python Flask框架之蓝图”的完整攻略: 什么是Flask蓝图(Blueprint)? 在基于Flask框架开发应用程序时,不可避免的会遇到一些问题,比如应用程序的规模逐渐增大,导致代码逐渐复杂,并且难以进行维护。此时,就需要考虑对应用程序进行模块化分解,以便更好地将其组织起来。这就是Flask蓝图出现的原因。 蓝图是一种特殊的Fla…

    Flask 2023年5月15日
    00
  • Vue和Flask通信的实现

    下面是“Vue和Flask通信的实现”的完整攻略: 1. 前言 Vue是前端框架,Flask是后端框架,在面对复杂的前后端交互时,Vue和Flask的相互通信尤为重要。本攻略将介绍如何使用Vue和Flask进行通信,并提供两个示例说明。 2. 基本步骤 Vue和Flask通信的基本步骤如下: 在Flask中定义路由和接口 在Vue中调用Flask接口 在Vu…

    Flask 2023年5月15日
    00
  • 详谈在flask中使用jsonify和json.dumps的区别

    下面是详细的攻略: 标题 标题应该明确说明本文的主题,并突出重点内容。 简介 首先,需要对 jsonify 和 json.dumps 进行简单的介绍: jsonify 是 Flask 内置的一个函数,它可以将 Python 对象转化为 JSON 字符串,并将 JSON 字符串包装成一个 Flask Response 对象,以方便的返回给客户端。 json.d…

    Flask 2023年5月16日
    00
  • Flask带参URL传值的实现方法

    下面是完整的攻略,包含两个示例说明。 Flask带参URL传值的实现方法 在基于Flask框架构建Web应用程序的开发中,要实现将参数传递给URL的功能,Flask提供了多种实现方法。下面分别对这些方法进行详细的讲解。 方法1:基于URL路径传递参数 这是一种常见的URL传递参数的方式,在URL路径中添加参数,可以通过Flask提供的URL规则,解析出参数并…

    Flask 2023年5月16日
    00
  • Flask web开发处理POST请求实现(登录案例)

    对于“Flask web开发处理POST请求实现(登录案例)”的完整攻略,这里提供以下内容: 1. 准备工作 在开始实现登录功能前,需要安装Flask框架。 开发环境安装Flask的方式: pip install flask 2. 实现登录功能 2.1 创建登录页面 在开发过程中,首先需要创建一个登录页面。具体实现步骤如下: 在templates目录下创建l…

    Flask 2023年5月15日
    00
  • 打包FlaskAdmin程序时关于static路径问题的解决

    将FlaskAdmin程序打包成一个单独的可执行文件,可以极大地方便运行和分发。但是在打包的过程中常常会遇到static路径的问题。下面是关于解决static路径问题的攻略。 问题描述 在FlaskAdmin程序中,我们通常需要在后台管理页面中使用静态资源。在开发过程中,我们可以使用相对路径(如”./static/js/myscript.js”)来指定静态资…

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