flask使用mysql教程
Flask简介及环境准备
在深入了解如何在Flask框架中使用MySQL之前,我们需要对Flask有一个基本的了解。Flask是一个轻量级的Web应用框架,由Python编写,易于扩展,功能强大。它允许你根据项目需要开始一个最简单的核心功能,增加更多的扩展。
我们需要在开始前安装Flask库。如未安装Flask,可通过Python包管理工具pip轻松安装:使用命令pip install flask
可以。此外,由于MySQL被用作数据库,MySQL和相应的Python库也需要安装,例如mysql-connector-python
或PyMySQL
。
pip install Flask pip install mysql-connector-python
在安装完成后,我们可以创建一个新的Flask应用程序,并在其中配置MySQL数据库。
在Flask中配置MySQL连接。
配置MySQL是Flask应用中的一个重要环节,因此,我们需要创建一个连接参数(如数据库名称、用户、密码、主机等)。)在主应用文件中直接设置数据库。
推荐方法是创建一个独立的配置类,并在应用程序实例化时加载该类。这样可以增强代码的可维护性,便于配置管理。以下是配置类的例子:
class Config(object): MYSQL_DATABASE_HOST = 'localhost' MYSQL_DATABASE_USER = 'yourusername' MYSQL_DATABASE_PASSWORD = 'yourpassword' MYSQL_DATABASE_DB = 'yourdbname' app = Flask(__name__) app.config.from_object(Config)
一般情况下,使用Flask应用程序app.config
对变量进行管理。为了避免连接失败,在此过程中,确保您的数据库信息正确。
创建MySQL数据库和表格。
在配置Flask连接MySQL的参数后,我们需要创建数据库和所需的手表,这样我们就可以进行后续的数据操作。您可以使用phpMyAdmin等MySQL命令行工具或图形界面工具来创建数据库和手表。
下面是MySQL命令示例,创建一个简单的用户表:
CREATE DATABASE flaskapp; USE flaskapp; CREATE TABLE users( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(255) NOT NULL, email VARCHAR(100) );
该用户表有四个字段,其中id是自动增加的主键。在实际开发中,您可能需要为手表添加其他字段或限制来满足应用程序的需要。
在Flask中操作MySQL数据库。
我们配置了Flask的MySQL连接,并建立了所需的表格。现在我们可以在Flask中编写代码来操作这些数据。视图函数可以通过编写来完成(view functions)用MySQL命令对应用中的路由进行处理,并使用MySQL命令对数据进行查询、插入、更新或删除。
以下是一个简单的将数据插入users表的例子:
from flask import Flask, request from mysql.connector import connect app = Flask(__name__) app.config.from_object(Config) @app.route('/register', methods=['POST']) def register(): conn = connect(host=app.config['MYSQL_DATABASE_HOST'], user=app.config['MYSQL_DATABASE_USER'], password=app.config['MYSQL_DATABASE_PASSWORD'], database=app.config['MYSQL_DATABASE_DB']) cursor = conn.cursor() username = request.form['username'] password = request.form['password'] # 哈希处理密码,请在实际开发中处理。 email = request.form['email'] query = 'INSERT INTO users (username, password, email) VALUES (%s, %s, %s)' cursor.execute(query, (username, password, email)) conn.commit() cursor.close() conn.close() return 'Register successful!'
通过这一注册视图函数,我们获得了表单数据,并构建了一个插入SQL。我们使用它。cursor.execute()
执行SQL,并通过SQL,conn.commit()
提交变更。这个例子很简单,在实际开发中还需要错误的处理和数据验证。
创建与MySQL数据库交互的动态Web页面。
Flask不仅可以让我们操作后端数据,还可以轻松创建和渲染前端网页。我们要做的就是配合模板引擎渲染动态内容(比如Jinja2,Flask默认模板引擎)。以下是一个用户列表页面与MySQL数据库相结合的案例:
@app.route('/userlist') def user_list(): conn = connect(host=app.config['MYSQL_DATABASE_HOST'], user=app.config['MYSQL_DATABASE_USER'], password=app.config['MYSQL_DATABASE_PASSWORD'], database=app.config['MYSQL_DATABASE_DB']) cursor = conn.cursor() cursor.execute('SELECT id, username, email FROM users') user_list = cursor.fetchall() cursor.close() conn.close() return render_template('userlist.html', users=user_list)
在用户列表视图中,我们执行了一个SQL命令来查询所有用户,并使用它。fetchall()
获得查询结果的方法。接着,这些数据被传递给render_template()
在网页上显示函数和相应的模板文件。
相应的HTML模板`userlist.html`也许看上去是这样的(为了简洁起见,省略了一些HTML代码和CSS样式):
<!DOCTYPE html> <html lang="en"> <head> <title>User List</title> </head> <body> <table> <tr> <th>ID</th> <th>Username</th> <th>Email</th> </tr> {% for user in users %} <tr> <td>{{ user[0] }}</td> <td>{{ user[1] }}</td> <td>{{ user[2] }}</td> </tr> {% endfor %} </table> </body> </html>
这款HTML模板, 通过遍历使用Jinja2模板语法users
用户列表的变量传递,并在表格中生成每一行。通过这种方式,用户列表页面可以根据MySQL数据库中的数据动态生成。