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

下面我将为您详细介绍如何在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日

相关文章

  • 在Python的Flask框架下收发电子邮件的教程

    在Python的Flask框架下收发电子邮件需要使用到Python标准库中的smtplib和email模块。 安装Flask-Mail 在开始之前,需要先安装Flask-Mail。 可以在终端中使用以下命令进行安装: pip install Flask-Mail 或者在服务器/虚拟环境中使用以下命令进行安装: sudo pip install Flask-M…

    Flask 2023年5月16日
    00
  • Python+ Flask实现Mock Server详情

    下面是Python + Flask实现Mock Server的完整攻略: 1. 什么是Mock Server Mock Server是指一个虚拟的服务端,用于模拟实际的服务端行为以便进行测试和开发。通过构建Mock Server,我们可以在没有实际服务端的情况下进行开发和测试,从而提高开发效率。 2. Flask框架简介 Flask是一个轻量级的Web框架,…

    Flask 2023年5月15日
    00
  • flask实现验证码并验证功能

    那么首先来介绍一下 Flask。Flask 是一款轻量级的 Web 应用框架,它基于 Jinja2 模板引擎,Werkzeug WSGI 工具包和 Python 标准库。它具有灵活性、可扩展性和易于使用等特点,适合用于快速地搭建原型应用、服务、RESTful API 和网站等。 当在网站或后台管理系统中设计登录表单时,通常需要使用验证码验证功能来防止恶意 B…

    Flask 2023年5月15日
    00
  • Python flask框架post接口调用示例

    下面是“Python Flask框架POST接口调用示例”的完整攻略: 1. 确保flask和requests已安装 在开始之前,需要确保flask和requests已安装。如果没有安装可以在命令行中使用以下命令进行安装: pip install flask pip install requests 2. 创建Flask应用程序 创建一个Python脚本ap…

    Flask 2023年5月15日
    00
  • 一个基于flask的web应用诞生(1)

    我来详细讲解一下基于Flask的Web应用诞生过程,其中包含两个示例。 1. 创建Flask应用 首先需要安装Flask模块,可以使用pip安装:pip install flask 然后,在Python中创建Flask应用,需要导入Flask模块,创建一个Flask对象,代码如下: from flask import Flask app = Flask(__…

    Flask 2023年5月15日
    00
  • 关于前后端json数据的发送与接收详解

    关于前后端json数据的发送与接收详解 前言:前后端分离的开发模式在现代的web开发中越来越流行,而其中前后端数据交互使用的json格式也变得愈加重要。本篇攻略将详细介绍前后端json数据的发送与接收。 一、json数据格式 1.1 JSON介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaSc…

    Flask 2023年5月16日
    00
  • Python编程flask使用页面模版的方法

    一、使用页面模板 Flask使用Jinja2作为默认的模板引擎。Jinja2是一个现代的模板引擎,可以方便地生成HTML、XML或其他格式的文档。使用Jinja2模板引擎可以快速生成静态页面,提高开发效率。 在项目根目录下新建一个templates文件夹,这个文件夹存放我们的模板文件。然后在模板文件夹下新建一个HTML文件作为模板文件。 示例一:一个简单的模…

    Flask 2023年5月15日
    00
  • 基于SQLAlchemy实现操作MySQL并执行原生sql语句

    基于SQLAlchemy实现操作MySQL并执行原生sql语句的完整攻略如下: 安装SQLAlchemy 首先需要安装SQLAlchemy,可以通过pip命令安装: pip install sqlalchemy 连接到MySQL数据库 使用SQLAlchemy连接到MySQL数据库的代码如下: from sqlalchemy import create_en…

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