Flask使用SQLAlchemy实现持久化数据

当我们需要在Flask应用中使用关系型数据库,SQLAlchemy是一款功能强大,易于使用的Python ORM框架。在此,我将介绍如何在Flask应用中使用SQLAlchemy实现持久化数据。

步骤1:安装依赖

在开始前,我们需要安装依赖。在终端中执行以下命令安装依赖:

pip install flask sqlalchemy

步骤2:创建Flask应用

我们首先需要编写一个Flask应用。在Flask应用中,我们需要通过调用SQLAlchemy的API实现对数据库的访问。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "Hello World!"

if __name__ == '__main__':
    app.run()

步骤3:配置SQLAlchemy

接下来,我们需要配置SQLAlchemy。在Flask应用中,我们可以通过设置SQLALCHEMY_DATABASE_URI环境变量来指定关系型数据库的连接。我们还需要指定SQLAlchemy的Track_Mods选项为False,以避免出现警告信息。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

@app.route('/')
def index():
    return "Hello World!"

if __name__ == '__main__':
    app.run()

步骤4:创建数据模型

我们需要通过创建数据模型来定义关系型数据库的表结构。在SQLAlchemy中,我们可以通过继承SQLAlchemy.Model类来定义数据模型。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

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), nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

@app.route('/')
def index():
    return "Hello World!"

if __name__ == '__main__':
    app.run()

上述代码中,我们定义了一个User类,该类继承了SQLAlchemy.Model类,拥有id、username、email属性,其中id为主键,username不允许为空且必须唯一。

步骤5:初始化数据库

我们需要通过调用SQLAlchemy的API来创建关系型数据库的表结构。我们可以通过调用db.create_all()方法来创建表结构。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

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), nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

db.create_all()

@app.route('/')
def index():
    return "Hello World!"

if __name__ == '__main__':
    app.run()

示例1:增删改查操作

现在我们已经定义了数据模型和初始化了数据库,可以对数据进行增删改查操作。我们以User类为例。

添加操作

可以通过实例化User类并将其写入数据库,然后通过commit()方法将更改保存到数据库。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

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), nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

db.create_all()

user1 = User(username='admin', email='admin@example.com')
db.session.add(user1)
db.session.commit()

@app.route('/')
def index():
    return "Hello World!"

if __name__ == '__main__':
    app.run()

查询操作

可以通过调用db.session.query(User).all()方法来获取所有User类的实例。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

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), nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

db.create_all()

users = db.session.query(User).all()
for user in users:
    print(user.username)

@app.route('/')
def index():
    return "Hello World!"

if __name__ == '__main__':
    app.run()

修改操作

可以通过获取User实例并更改其属性值,然后通过commit()方法将更改保存到数据库。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

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), nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

db.create_all()

user = db.session.query(User).filter_by(username='admin').first()
user.email = 'new_admin@example.com'
db.session.commit()

@app.route('/')
def index():
    return "Hello World!"

if __name__ == '__main__':
    app.run()

删除操作

可以通过获取User实例并调用db.session.delete()方法将其从数据库中删除,然后通过commit()方法将更改保存到数据库。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

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), nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

db.create_all()

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

@app.route('/')
def index():
    return "Hello World!"

if __name__ == '__main__':
    app.run()

示例2:使用Flask-migrate进行数据库迁移

在Flask应用的开发过程中,我们可能需要对数据库进行迁移。在这个过程中,我们需要修改关系型数据库的表结构。Flask-migrate是一个简单的库,它可以使我们更方便地进行数据库迁移。

步骤1:安装依赖

在开始前,我们需要安装依赖。在终端中执行以下命令安装依赖:

pip install flask-migrate

步骤2:创建Flask应用

同样,我们首先需要编写一个Flask应用。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)
migrate = Migrate(app, db)

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), nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

@app.route('/')
def index():
    return "Hello World!"

if __name__ == '__main__':
    app.run()

步骤3:创建迁移脚本

我们需要通过调用flask db init命令来初始化迁移目录。然后,我们可以通过调用flask db migrate命令来创建迁移脚本。最后,我们可以通过调用flask db upgrade命令来升级关系型数据库。

flask db init
flask db migrate -m "create users table"
flask db upgrade

步骤4:修改数据模型

假设我们需要添加一个age属性到User类,来表示该用户的年龄。我们可以通过在User类中添加一个age属性来修改数据模型。

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), nullable=False)
    age = db.Column(db.Integer)

    def __repr__(self):
        return '<User %r>' % self.username

步骤5:创建新的迁移脚本和升级关系型数据库

我们可以通过调用flask db migrate命令来创建新的迁移脚本,然后通过调用flask db upgrade命令来升级关系型数据库。

flask db migrate -m "add age column to users table"
flask db upgrade

到此为止,我们就完成了使用SQLAlchemy实现Flask应用中持久化数据的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flask使用SQLAlchemy实现持久化数据 - Python技术站

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

相关文章

  • 用 Flask 实现发送电子邮件

    Flask 是一款轻量级的 Web 框架,非常适合快速开发小型 Web 应用。 在这篇文章中,我们将详细介绍如何在 Flask 应用中发送邮件。 安装 Flask-Mail 扩展 首先,我们需要安装 Flask-Mail 扩展来发送邮件。可以使用下面的命令来安装 Flask-Mail: pip install Flask-Mail 接下来,我们需要设置 Fl…

    Flask 2023年3月13日
    00
  • Python Flask实现图片验证码与邮箱验证码流程详细讲解

    细致的Python Flask实现图片验证码与邮箱验证码流程详细讲解,以下就是教程: 1. 图片验证码的流程 1.1 安装依赖库 首先要安装依赖库,可以使用pip直接安装如下库 pip install flask flask-wtf Pillow Flask是Web框架 Flask-wtf是Flask的表单框架 Pillow是Python中的图像处理库 1.…

    Flask 2023年5月16日
    00
  • Flask框架通过Flask_login实现用户登录功能示例

    下面我将为你详细讲解 Flask 框架通过 Flask_login 实现用户登录功能的完整攻略。 1. 简介 Flask 框架是一个轻量级、开源的Python Web框架,它基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask 在设计时保持了简洁明了的特点,允许开发者使用相对简单的代码,快速搭建出功能完善的Web应用。 Flask_log…

    Flask 2023年5月15日
    00
  • flask的orm框架SQLAlchemy查询实现解析

    下面我会详细讲解如何使用flask中的ORM框架SQLAlchemy进行查询,并附上两个示例。 一、什么是ORM框架? ORM (Object-Relational Mapping) 是对象关系映射的缩写,是指通过将数据库中的关系数据转换为对象模型,将程序中的对象模型通过映射转换成关系数据。本质上,ORM框架是一种工具,用于连接Python对象和数据库表之间…

    Flask 2023年5月15日
    00
  • python编程Flask框架简单使用教程

    关于“Python编程Flask框架简单使用教程”的完整攻略,我可以提供以下内容: Python编程Flask框架简单使用教程攻略 什么是Flask框架 Flask是一个使用Python编写的Web应用程序框架,它可以轻松构建具有可扩展性的Web应用程序。 如何安装Flask框架 要安装Flask框架,只需要在终端输入以下命令即可: pip install …

    Flask 2023年5月15日
    00
  • Python的Flask框架中实现简单的登录功能的教程

    下面是详细讲解”Python的Flask框架中实现简单的登录功能的教程”的完整攻略。 前置知识 在学习本教程之前,需要对以下技术有一定的了解:- Python基础知识- Flask框架基础知识- HTML/CSS/JS基础知识 步骤一:准备 安装Python(建议使用3.6以上版本),并安装pip包管理工具。 通过pip安装Flask框架:pip insta…

    Flask 2023年5月16日
    00
  • JQuery异步post上传表单数据标准化模板

    JQuery异步post上传表单数据标准化模板是一种常用的前端技术。本攻略将详细讲解此过程,并提供两条示例说明。具体步骤如下: 一、设置请求 url 和 data 请求 url 可以指向一个后台处理请求的页面。 data 是现有表单的序列化数据和其他要提交的数据的对象。对象的主要属性应与表单中的输入字段的“name”属性匹配。 二、设置异步ajax请求 设置…

    Flask 2023年5月16日
    00
  • Flask之请求钩子的实现

    Flask中有四个请求钩子,分别是before_first_request、before_request、after_request和teardown_request。这些钩子可以使得我们在请求处理的过程中,注入自己的代码逻辑,比如在请求之前或之后进行操作。 下面我们就逐个讲解这四个请求钩子的实现。 1. before_first_request befor…

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