使用 Flask 连接 MySQL 数据库的指南

Flask 是一个用 Python 编写的轻量级 Web 应用框架,因其简单易用而受到许多开发者的喜爱。MySQL 是一种成熟的关系型数据库,它在许多应用中被广泛使用。本篇文章将介绍如何在 Flask 应用中连接和读取 MySQL 数据库,并提供适量的代码示例,让你能迅速上手。

环境准备

在开始之前,确保你已经安装了以下环境和库:

  1. Python 3.x
  2. Flask
  3. MySQL 数据库
  4. Flask-MySQLdb 或 Flask-SQLAlchemy(用于连接 MySQL)

安装 Flask 和 MySQL 连接库

在终端中运行以下命令来安装 Flask 和 Flask-MySQLdb:

pip install Flask Flask-MySQLdb

或者,如果你希望使用 Flask-SQLAlchemy:

pip install Flask Flask-SQLAlchemy

创建 MySQL 数据库

在 MySQL 中创建一个数据库和一张示例表。在 MySQL 命令行中,运行以下 SQL 语句:

CREATE DATABASE travel;
USE travel;

CREATE TABLE destinations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    country VARCHAR(100) NOT NULL
);

然后,插入一些示例数据:

INSERT INTO destinations (name, country) VALUES
('Eiffel Tower', 'France'),
('Great Wall', 'China'),
('Machu Picchu', 'Peru');

创建 Flask 应用

接下来,我们将创建一个简单的 Flask 应用来读取数据库中的数据。首先,在项目目录中创建一个 app.py 文件。

导入库

app.py 文件中,添加如下代码以导入必要的库:

from flask import Flask, jsonify
from flask_mysqldb import MySQL

app = Flask(__name__)

# MySQL 配置
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'your_username'
app.config['MYSQL_PASSWORD'] = 'your_password'
app.config['MYSQL_DB'] = 'travel'

mysql = MySQL(app)

确保将 'your_username''your_password' 替换为实际的 MySQL 用户名和密码。

创建读取数据的路由

我们将创建一个路由来从 MySQL 数据库读取数据并返回为 JSON 格式。在 app.py 文件中添加以下代码:

@app.route('/destinations', methods=['GET'])
def get_destinations():
    cur = mysql.connection.cursor()
    cur.execute("SELECT * FROM destinations")
    results = cur.fetchall()
    cur.close()
    
    # 将结果转换为字典格式
    destinations = []
    for row in results:
        destinations.append({
            'id': row[0],
            'name': row[1],
            'country': row[2]
        })
        
    return jsonify(destinations)

启动 Flask 应用

最后,添加以下代码来启动 Flask 应用:

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

将以上代码合并,完整的 app.py 文件如下:

from flask import Flask, jsonify
from flask_mysqldb import MySQL

app = Flask(__name__)

# MySQL 配置
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'your_username'
app.config['MYSQL_PASSWORD'] = 'your_password'
app.config['MYSQL_DB'] = 'travel'

mysql = MySQL(app)

@app.route('/destinations', methods=['GET'])
def get_destinations():
    cur = mysql.connection.cursor()
    cur.execute("SELECT * FROM destinations")
    results = cur.fetchall()
    cur.close()
    
    # 将结果转换为字典格式
    destinations = []
    for row in results:
        destinations.append({
            'id': row[0],
            'name': row[1],
            'country': row[2]
        })
        
    return jsonify(destinations)

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

启动和测试

在终端中运行 Flask 应用:

python app.py

打开浏览器并访问 ` JSON 格式显示的所有旅行目的地。

旅行图示例

接下来,我们使用 Mermaid 语法展示一次旅行的过程,以让读者更直观地了解从起点到目的地的过程。

journey
    title 旅行过程
    section 计划旅行
      收集信息: 5: 我
      确定时间: 4: 我
      预订机票: 3: 我
    section 出发
      到达机场: 5: 我
      办理登机手续: 4: 我
      等待登机: 3: 我
    section 到达目的地
      入境检查: 5: 我
      获取行李: 4: 我
      开始探索: 5: 我

结尾

通过本文的介绍,我们成功地创建了一个简单的 Flask 应用,并连接到 MySQL 数据库来读取旅行目的地的数据。Flask 提供了一个很好的平台,而 MySQL 则让数据管理变得简单。在实际开发中,你可以根据需求扩展应用功能,添加用户认证、数据更新和删除等功能。

希望这篇文章能为你的 Flask 学习之路提供帮助。如果你有任何疑问或建议,也欢迎在评论区与我们分享!