下面是详细的“flask 框架操作MySQL数据库简单示例”教程:
1. 准备工作
在开始之前,你需要先安装好Python和MySQL,同时安装好以下两个Python库:
- Flask:一个基于 Python 的轻量级 Web 应用框架
- Flask-MySQLdb:一个用于在 Flask 应用中连接和操作 MySQL 数据库的库
以macOS系统为例,可以在终端输入以下命令分别安装 Flask 和 Flask-MySQLdb:
pip install flask
pip install flask-mysqldb
2.示例 1:查询数据
2.1 初始化 Flask 应用
首先,需要在 Python 文件中导入 Flask 库和 flask-mysqldb 库,并初始化 Flask 应用:
from flask import Flask, jsonify, request
from flask_mysqldb import MySQL
app = Flask(__name__)
mysql = MySQL(app)
其中,app
变量是一个 Flask 对象,mysql
变量是一个 Flask-MySQLdb 对象。我们需要在 Flask 应用创建后将数据库连接信息设置到 Flask-MySQLdb 对象中:
app.config['MYSQL_HOST'] = 'localhost' # 数据库地址
app.config['MYSQL_USER'] = 'root' # 数据库用户名
app.config['MYSQL_PASSWORD'] = '123456' # 数据库密码
app.config['MYSQL_DB'] = 'test' # 数据库名
mysql.init_app(app) # 初始化 MySQL
这样,mysql
对象就可以连接到我们的 MySQL 数据库了。
2.2 编写查询代码
下面,让我们编写一个查询指定数据表的所有数据的路由,并将查询结果返回给客户端。首先,需要设置一个路由地址,让客户端可以请求并访问该路由:
@app.route('/api/get-data', methods=['GET'])
def get_data():
cursor = mysql.connection.cursor()
cursor.execute("SELECT * FROM mytable")
rows = cursor.fetchall()
cursor.close()
return jsonify({'data': rows})
@app.route
是 Python 装饰器,用于设置 Flask 应用的路由地址methods=['GET']
表示这个路由仅能使用 GET 方法访问mysql.connection.cursor()
创建一个数据库游标对象,用于查询数据cursor.execute("SELECT * FROM mytable")
使用游标执行 SQL 查询操作cursor.fetchall()
获取查询结果中所有的数据行cursor.close()
关闭游标连接jsonify({'data': rows})
将查询结果转化为 JSON 格式并返回给客户端
这个路由的作用是从 MySQL 数据库中查询 mytable
数据表的所有数据,并将查询结果返回给客户端。
2.3 启动 Flask 应用
以上代码编写完成后,将程序保存为 app.py
文件,然后在终端中输入以下命令启动 Flask 应用:
python app.py
在浏览器中输入 http://localhost:5000/api/get-data
,即可看到查询结果。
3. 示例 2:插入数据
3.1 编写插入代码
下面,让我们编写一个将数据插入到指定数据表的路由,并将插入结果返回给客户端。首先,需要设置一个路由地址,让客户端可以请求并访问该路由:
@app.route('/api/add-data', methods=['POST'])
def add_data():
data = request.get_json()
name = data['name']
age = data['age']
cursor = mysql.connection.cursor()
cursor.execute(f"INSERT INTO mytable (name, age) VALUES ('{name}', {age})")
mysql.connection.commit()
cursor.close()
return jsonify({'status': 'success'})
request.get_json()
用于从 POST 请求的表单数据中获取 JSON 数据mysql.connection.cursor()
创建一个数据库游标对象,用于插入数据cursor.execute(f"INSERT INTO mytable (name, age) VALUES ('{name}', {age})")
使用游标执行 SQL 插入操作mysql.connection.commit()
提交插入操作的结果cursor.close()
关闭游标连接jsonify({'status': 'success'})
将插入结果转化为 JSON 格式并返回给客户端
这个路由的作用是将客户端 POST 请求发送的数据插入到 MySQL 数据库的 mytable
数据表中,并将插入结果返回给客户端。
3.2 测试插入数据
在浏览器中输入以下地址:
http://localhost:5000/api/add-data
在 Postman 或其他 RESTful 客户端中发送一个 POST 请求,请求地址同上,并在 Body 中设置 JSON 数据,如:
{
"name": "张三",
"age": 20
}
发送请求后,如果插入操作成功,则返回:
{
"status": "success"
}
4. 总结
到此为止,我们已经使用 Flask 和 Flask-MySQLdb 完成了对 MySQL 数据库的查询和插入操作。在实际的项目开发中,我们可以根据需要进行扩展和优化,例如加入用户认证、错误处理等功能,以提高项目的可用性和稳定性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flask 框架操作MySQL数据库简单示例 - Python技术站