如何使用Flask-SQLAlchemy进行数据库操作

1. 什么是Flask-SQLAlchemy

Flask-SQLAlchemy是一个可以在Flask应用程序中使用的SQLAlchemy扩展。SQLAlchemy是Python中最流行和功能最强大的ORM(对象关系映射)库之一。ORM库可以使Python应用程序能够更轻松地与关系型数据库进行交互。

Flask-SQLAlchemy是使用Flask和SQLAlchemy的最佳方式之一。 Flask-SQLAlchemy提供了一些有用的功能,例如:自动管理数据库连接、自动创建和更新数据库模型、自动处理多进程应用程序中的线程安全等问题。

2. 安装Flask-SQLAlchemy

在开始使用Flask-SQLAlchemy之前,我们需要安装它。可以使用pip来执行安装,如下所示:

pip install Flask-SQLAlchemy

3. 如何使用Flask-SQLAlchemy进行数据库操作

3.1 配置数据库连接

在Flask应用程序中使用Flask-SQLAlchemy之前,我们需要将应用程序配置为连接到数据库。因此在Flask中使用Flask-SQLAlchemy需要在应用程序中定义数据库连接字符串,这通常称为数据库URI。URI是一种格式字符串,用于描述如何连接到数据库。

在配置应用程序之前,需要先在电脑上安装并启动数据库。在此过程中,通常会为数据库设置登录用户名和密码。

在Flask-SQLAlchemy中,URI存储在Flask应用程序的配置对象中。可以在应用程序的配置文件中定义数据库URI。通常情况下,这些文件被命名为config.py并位于应用程序的根目录中。

对于SQLite数据库,可以使用以下的URI:

SQLALCHEMY_DATABASE_URI = 'sqlite:////absolute/path/to/db/file'

对于PostgreSQL数据库,可以使用以下URI:

SQLALCHEMY_DATABASE_URI = 'postgresql://username:password@hostname/database'

3.2 定义模型

在Flask-SQLAlchemy中,可以使用Python类定义数据库表结构。这些类被称为“模型”。Flask-SQLAlchemy根据这些模型自动创建数据库表。

每个模型都是Python类,并定义为继承自于db.Model。模型中的变量用来定义表中的列。每个列都是类变量并且由 sqlalchemy.Column 类型定义。

以下是一个简单的Flask-SQLAlchemy模型的例子:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(80), unique=True)

email = db.Column(db.String(120), unique=True)

def __repr__(self):

return '<User %r>' % self.username

3.3 创建数据库表

在定义了模型之后,我们需要告诉Flask-SQLAlchemy创建数据库表。可以使用db.create_all()来执行此操作。

代码如下:

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'

db = SQLAlchemy(app)

# Define the model

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(80), unique=True)

email = db.Column(db.String(120), unique=True)

def __repr__(self):

return '<User %r>' % self.username

# Create the database tables

db.create_all()

3.4 CRUD操作

3.4.1 创建

在Flask中使用SQLAlchemy的过程中,创建记录是一个简单的操作。只需要创建一个模型类实例并调用db.session.add()方法,并最后使用db.session.commit()将更改保存到数据库中。

代码如下:

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'

db = SQLAlchemy(app)

# Define the model

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(80), unique=True)

email = db.Column(db.String(120), unique=True)

def __repr__(self):

return '<User %r>' % self.username

# Create a new user

new_user = User(username='John Doe', email='johndoe@example.com')

db.session.add(new_user)

db.session.commit()

3.4.2 读取

要从数据库中读取数据,可以使用db.session.query()方法。可以在query()方法中传递模型类来读取数据。此外,可以使用filter()方法过滤查询结果。

以下代码演示了如何从数据库中读取所有用户的数据:

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'

db = SQLAlchemy(app)

# Define the model

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(80), unique=True)

email = db.Column(db.String(120), unique=True)

def __repr__(self):

return '<User %r>' % self.username

# Retrieve all users

users = db.session.query(User).all()

for user in users:

print(user.username)

3.4.3 更新

要更新数据库中的记录,可以查询记录并修改其属性,然后调用db.session.commit()方法将更改保存到数据库中。

以下代码演示了如何更新数据库中的记录:

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'

db = SQLAlchemy(app)

# Define the model

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(80), unique=True)

email = db.Column(db.String(120), unique=True)

def __repr__(self):

return '<User %r>' % self.username

# Retrieve a user and update their email address

user = db.session.query(User).filter_by(username='John Doe').first()

user.email = 'johndoe@example.org'

db.session.commit()

3.4.4 删除

要从数据库中删除记录,可以在query()方法中传递模型类,然后使用delete()方法删除指定的记录,最后调用db.session.commit()保存更改。

以下代码演示了如何从数据库中删除记录:

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'

db = SQLAlchemy(app)

# Define the model

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(80), unique=True)

email = db.Column(db.String(120), unique=True)

def __repr__(self):

return '<User %r>' % self.username

# Delete a user

user = db.session.query(User).filter_by(username='John Doe').first()

db.session.delete(user)

db.session.commit()

4. 总结

本文阐述了如何使用Flask-SQLAlchemy进行数据库操作,包括如何:配置数据库连接、定义模型、创建数据库表、进行CRUD操作。 使用Flask-SQLAlchemy是连接Flask和SQLAlchemy的最佳方式之一。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签