Flask使用SQLAlchemy实现持久化数据

yizhihongxing

当我们需要在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中的wtforms使用方法

    下面是有关Flask中使用WTForms的详细攻略。 WTForms简介 WTForms是一个Python第三方库,用于构建Web表单。它为表单字段提供了类型安全、数据验证和呈现模板的便捷方法。WTForms还提供了可扩展的表单字段和验证器,以方便自定义表单实现。 此外,WTForms还具有与Flask框架的集成。因此,在Flask应用程序中使用WTForm…

    Flask 2023年5月16日
    00
  • python+flask实现API的方法

    一、Python+Flask实现API的方法 Flask是一个轻量级的Web框架,使用Python编写。通过Flask,我们可以快速地构建一个API服务。实现API一般分为以下几个步骤: 定义路由 定义API请求的方法 定义API的返回数据格式 启动Flask应用 二、示例1 下面通过一个简单的示例来演示如何使用Python+Flask实现API。 定义路由…

    Flask 2023年5月15日
    00
  • 查看Django和flask版本的方法

    查看Django和Flask的版本可以使用如下命令: 查看Django的版本 python -m django –version 如果你在虚拟环境下使用Django,需要先激活虚拟环境后再执行上述命令,例如: # 激活虚拟环境 source venv/bin/activate # 查看Django版本 python -m django –version …

    Flask 2023年5月15日
    00
  • Pycharm+Flask零基础项目搭建入门的实现

    我将为您详细讲解“Pycharm+Flask零基础项目搭建入门的实现”的完整攻略。该攻略分为以下几个步骤: 1. 安装Pycharm和Flask 首先需要安装Python的开发环境——Pycharm。Pycharm是一个功能强大、使用便捷的Python集成开发环境,可以大大提高开发效率。 安装完Pycharm后,需要安装Flask,这是一个基于Python的…

    Flask 2023年5月15日
    00
  • 详解python执行shell脚本创建用户及相关操作

    下面我将详细讲解如何使用Python执行Shell脚本并创建用户及相关操作,并提供两个示例作为说明。 进行前的准备工作 在开始之前,我们需要确认Python和Shell都已经安装好并且可用。同时,我们需要明确本次操作需要使用到的Python模块和Shell命令。具体的准备工作如下: Python模块 本次操作需要使用到的Python模块有: os: 用于执行…

    Flask 2023年5月15日
    00
  • Python Flask-Login实现用户会话管理

    我将为您讲解“Python Flask-Login实现用户会话管理”的完整攻略,包含两条示例说明。 提供背景知识 Flask-Login是一个用于Flask的用户会话管理库,提供了方便的登录、注销等功能。通过Flask-Login,我们可以很容易地实现用户会话管理的功能。 安装Flask和Flask-Login 在开始之前,我们需要安装Flask和Flask…

    Flask 2023年5月15日
    00
  • python jinja2模板的使用示例

    下面我将详细讲解“python jinja2模板的使用示例”的完整攻略,包含两个示例。 1. 安装Jinja2 首先,你需要安装Jinja2。如果你使用的是Python3,可以通过如下命令进行安装: pip3 install jinja2 2. 示例一 假如你有这样一个 hello.html 的模板文件: <html> <head> …

    Flask 2023年5月15日
    00
  • 在Python的Flask框架下使用sqlalchemy库的简单教程

    如果你准备使用Python Flask框架来开发web应用程序,那么SQLAlchemy库可以帮助你轻松与数据库进行交互。下面是一个基于Python Flask框架和SQLAlchemy库的简单教程: 安装依赖 在开始之前,请确保已经安装了Python和pip工具。然后,你需要使用pip安装Flask和SQLAlchemy库,你可以在命令行中输入以下命令: …

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