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 SQLAlchemy一对一,一对多的使用方法实践

    下面我就详细讲解Flask SQLAlchemy一对一、一对多的使用方法实践的完整攻略,包含两条示例说明: 一、Flask SQLAlchemy一对一的使用方法实践 1.1 创建Flask项目 首先,我们需要创建一个Flask项目,可以使用以下命令来创建: mkdir flask_one_to_one cd flask_one_to_one virtuale…

    Flask 2023年5月16日
    00
  • 在Python的Flask框架中验证注册用户的Email的方法

    在Python Flask框架中,验证注册用户的Email是非常重要的一步,这有助于确保用户提交的Email是真实有效的。以下是完成此过程的完整攻略: 1. 为注册页面添加表单 在Flask应用中,需要为注册页面添加表单。在表单中,需要添加一个邮箱输入框,以及提交和取消按钮。示例: <form method="POST" actio…

    Flask 2023年5月16日
    00
  • Python的flask接收前台的ajax的post数据和get数据的方法

    关于“Python的Flask接收前台的ajax的POST数据和GET数据的方法”的攻略,可以分为两部分来讲解。下面将详细介绍这两部分内容。 一、Flask接收前台的ajax的POST数据的方法 一般情况下,前台向后台提交数据的方式有POST和GET两种。在Flask中,接收前台的ajax的POST数据的方法,可以通过request对象进行获取。 下面是一个…

    Flask 2023年5月16日
    00
  • 用uWSGI和Nginx部署Flask项目的方法示例

    下面是“用uWSGI和Nginx部署Flask项目的方法示例”的完整攻略: 第一条示例:使用uWSGI和Nginx部署Flask项目 准备工作 在开始部署Flask项目前,你需要做以下准备工作: 在服务器上安装Nginx 在服务器上安装uWSGI 建立Flask项目 配置uWSGI 在Flask项目目录下创建一个uwsgi.ini文件,用于配置uWSGI。 …

    Flask 2023年5月15日
    00
  • Flask之flask-script模块使用

    下面是关于“Flask之flask-script模块使用”的完整攻略,包含两个示例说明。 什么是 Flask-Script 模块? Flask-Script 是 Flask 外部扩展库之一,它提供了一组命令行快捷方式,可用于管理应用程序的各种任务,例如初始化数据库、运行开发 web 服务器,等等。Flask-Script 使命令行交互更加方便。 安装 Fla…

    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的web应用诞生 bootstrap框架美化(3)

    我将详细讲解“一个基于flask的web应用诞生 bootstrap框架美化(3)”的完整攻略。 本篇攻略主要讲解如何通过使用Bootstrap框架来美化Flask应用程序。 示例1:使用Bootstrap的导航栏 首先,在HTML文件中引入Bootstrap的CSS和JS文件: <!DOCTYPE html> <html> <…

    Flask 2023年5月15日
    00
  • 详解Flask Session 会话的使用方法

    Flask Session 是 Flask 框架中处理会话的标准机制。它是一种服务器端状态管理机制,可用于跟踪用户的活动并在不同请求之间保留数据。 在本篇文章中,我们将介绍 Flask Session 的核心概念、使用方法和必要知识点。我们将通过一个实例程序进行演示,代码示例已经包含在下文中。 安装 Flask-Session 扩展 安装 Flask-Ses…

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