flask链接MySQL
时间: 2023-07-22 16:38:52 浏览: 45
好的,连接 Flask 和 MySQL 需要使用 Flask 扩展 Flask-MySQLdb 或 Flask-MySQL。这里我们以 Flask-MySQLdb 为例进行讲解。
首先,安装 Flask 和 Flask-MySQLdb:
```
pip install flask flask-mysqldb
```
然后在 Flask 应用程序文件中导入必要的模块:
```python
from flask import Flask, render_template, request, redirect
from flask_mysqldb import MySQL
```
接下来,创建一个 Flask 应用程序实例并配置 MySQL 数据库连接:
```python
app = Flask(__name__)
app.config['MYSQL_HOST'] = '<hostname>'
app.config['MYSQL_USER'] = '<username>'
app.config['MYSQL_PASSWORD'] = '<password>'
app.config['MYSQL_DB'] = '<dbname>'
mysql = MySQL(app)
```
在上面的代码中,您需要将 `<hostname>`, `<username>`, `<password>` 和 `<dbname>` 替换为您的 MySQL 数据库的实际值。
然后,创建路由和视图函数来处理请求和响应:
```python
@app.route('/')
def index():
cur = mysql.connection.cursor()
cur.execute("SELECT * FROM users")
users = cur.fetchall()
cur.close()
return render_template('index.html', users=users)
@app.route('/add', methods=['POST'])
def add_user():
name = request.form['name']
email = request.form['email']
cur = mysql.connection.cursor()
cur.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email))
mysql.connection.commit()
cur.close()
return redirect('/')
```
在上面的代码中,我们定义了两个路由:`/` 和 `/add`。`/` 路由显示所有用户,并从数据库中检索数据。`/add` 路由用于向数据库添加新用户。
最后,创建一个 HTML 模板来显示用户列表,并包含一个表单来添加新用户:
```html
<!DOCTYPE html>
<html>
<head>
<title>Flask MySQL Example</title>
</head>
<body>
<h1>Users</h1>
<ul>
{% for user in users %}
<li>{{ user[1] }} ({{ user[2] }})</li>
{% endfor %}
</ul>
<hr>
<h2>Add User</h2>
<form method="POST" action="/add">
<label>Name:</label>
<input type="text" name="name">
<label>Email:</label>
<input type="text" name="email">
<input type="submit" value="Add">
</form>
</body>
</html>
```
完整的示例代码如下:
```python
from flask import Flask, render_template, request, redirect
from flask_mysqldb import MySQL
app = Flask(__name__)
app.config['MYSQL_HOST'] = '<hostname>'
app.config['MYSQL_USER'] = '<username>'
app.config['MYSQL_PASSWORD'] = '<password>'
app.config['MYSQL_DB'] = '<dbname>'
mysql = MySQL(app)
@app.route('/')
def index():
cur = mysql.connection.cursor()
cur.execute("SELECT * FROM users")
users = cur.fetchall()
cur.close()
return render_template('index.html', users=users)
@app.route('/add', methods=['POST'])
def add_user():
name = request.form['name']
email = request.form['email']
cur = mysql.connection.cursor()
cur.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email))
mysql.connection.commit()
cur.close()
return redirect('/')
if __name__ == '__main__':
app.run(debug=True)
```
注意,您需要先在 MySQL 数据库中创建一个名为 `<dbname>` 的数据库。