使用Flask和SQLAlchemy构建Python Web应用

后端思维 2020-05-23 ⋅ 19 阅读

在今天的博客中,我们将介绍如何使用Flask和SQLAlchemy来构建Python Web应用。Flask是一个轻量级的Web框架,而SQLAlchemy是一个强大的Python ORM库。将它们结合使用可以方便地构建功能强大的Web应用程序。

准备工作

在开始之前,请确保您的系统上已经安装了Python和pip。然后,我们可以使用以下命令来安装Flask和SQLAlchemy:

$ pip install Flask
$ pip install SQLAlchemy

创建一个基本的Flask应用

首先,创建一个名为app.py的新文件,并添加以下代码:

from flask import Flask

app = Flask(__name__)

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

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

上述代码创建了一个基本的Flask应用,在浏览器中访问http://localhost:5000时,会显示"Hello, World!"。

配置数据库连接

现在,我们将添加数据库支持。首先,我们需要创建一个SQLite数据库文件。在app.py的同级目录中,使用以下命令创建一个database.db文件:

$ touch database.db

然后,我们需要配置SQLAlchemy连接到该数据库文件。在app.py中添加以下代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db' # 配置数据库连接

db = SQLAlchemy(app)

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

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

上述代码创建了一个SQLAlchemy对象,并将其连接到SQLite数据库文件。

创建模型

接下来,我们将定义一个模型来表示我们的数据。在app.py中添加以下代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

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

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)

    def __repr__(self):
        return f'<User {self.username}>'

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

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

上述代码定义了一个名为"User"的模型,它有一个主键"id"和一个"username"属性。我们还定义了__repr__方法,用于更友好地打印User对象。

创建数据库表

现在我们需要创建数据库表来存储我们的模型。为此,我们需要使用Flask的命令行工具。在终端中执行以下命令:

$ flask shell

然后在交互式Python环境中,输入以下命令:

>>> from app import db
>>> db.create_all()

这将创建一个名为"users"的数据库表,用于存储User模型的数据。

使用模型进行数据库操作

我们已经定义了模型并创建了数据库表。现在,让我们使用模型来执行一些数据库操作。在app.pyindex视图中添加以下代码:

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy

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

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)

    def __repr__(self):
        return f'<User {self.username}>'

@app.route('/')
def index():
    users = User.query.all() # 查询所有用户
    return render_template('index.html', users=users)

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

上述代码使用User.query.all()查询数据库中的所有用户,并将其传递给名为"index.html"的模板进行渲染。

创建模板

现在,我们需要创建一个名为"index.html"的模板,用于显示数据库中的用户列表。在项目根目录下创建一个名为"templates"的文件夹,并在其中创建名为"index.html"的文件。添加以下代码到"index.html"中:

<!DOCTYPE html>
<html>
<head>
    <title>Users</title>
</head>
<body>
    <h1>Users</h1>
    <ul>
        {% for user in users %}
            <li>{{ user.username }}</li>
        {% endfor %}
    </ul>
</body>
</html>

上述代码定义了一个简单的HTML页面,通过使用模板语言显示数据库中的用户列表。

运行应用

现在,我们已经完成了Flask应用的所有代码和模板。让我们运行应用并查看结果。在终端中执行以下命令:

$ python app.py

然后在浏览器中访问http://localhost:5000,您将看到一个包含数据库中所有用户的列表。

通过使用Flask和SQLAlchemy,我们可以方便地构建功能强大的Python Web应用程序。在本博客中,我们介绍了如何设置Flask应用、配置数据库连接、创建模型、创建数据库表、执行数据库操作和创建模板。希望这篇博客对您有所帮助,并能帮助您构建出色的Web应用程序。


全部评论: 0

    我有话说: