241 lines
7.0 KiB
Markdown
241 lines
7.0 KiB
Markdown
# Flask MySQL–设置 Flask 和 MySQL 数据库连接
|
||
|
||
> 原文:<https://www.askpython.com/python-modules/flask/flask-mysql-database>
|
||
|
||
在本文中,我们将学习如何建立一个 Flask MySQL 数据库连接。所以让我们开始吧!!
|
||
|
||
## 结构化查询语言
|
||
|
||
SQL 允许我们访问和操作数据库。在 SQL 中,我们可以执行各种任务,例如:
|
||
|
||
* 向数据库添加记录
|
||
* 创建表格
|
||
* 执行 CRUD(创建、读取、更新、删除)操作
|
||
|
||
SQL 是数据库系统使用的查询语言。为了建立数据库,我们需要像 MySQL,PostgreSQL 等 **RDMS** 。
|
||
|
||
一定要在 JournalDev 网站上查看我们的SQL 教程,以获得更多关于查询语言的知识。
|
||
|
||
## 关于 MySQL 数据库表的更多信息
|
||
|
||
现在让我们看一个典型的 MySQL 数据库表:
|
||
|
||
| 身份 | 名字 | 城市 | 国家 |
|
||
| --- | --- | --- | --- |
|
||
| one | 插口 | 在那里 | 美利坚合众国 |
|
||
| Two | 金姆(人名) | 加利福尼亚 | 美利坚合众国 |
|
||
| three | 瑞奇 | 芝加哥 | 美利坚合众国 |
|
||
| four | 南森(男子名) | 慕尼黑 | 德国 |
|
||
| five | 约拿单 | 巴伐利亚州 | 德国 |
|
||
| six | 麦莉(女子名) | 西雅图 | 美利坚合众国 |
|
||
|
||
DB Table
|
||
|
||
行被称为**记录**,列被称为**字段**。
|
||
|
||
因此,在上表中,我们有**六个记录**和**四个字段。**为了与表格元素进行交互,我们使用 SQL 语句。
|
||
|
||
**一些 SQL 语句是:**
|
||
|
||
* **SELECT FROM-**该语句**从一个表中选择** s 个字段(全部或几个)。
|
||
* **其中**–该条件语句通常与其他语句一起使用。利用这一点,我们可以选择满足某些给定条件的特定记录。
|
||
* **UPDATE**–该语句更新一个表格
|
||
* **编辑**–该语句编辑一个/多个记录的字段
|
||
* **DELETE**–该语句删除一条/多条记录
|
||
|
||
## 为我们的应用程序设置 MySQL 服务器
|
||
|
||
在本节中,我们将下载并建立我们的 MySQL 服务器
|
||
|
||
### 1.在服务器上安装 XAMPP
|
||
|
||
现在要使用 MySQL,我们需要一个软件工具来处理 MySQL 的网络管理。
|
||
|
||
在本教程中,我们将使用 **phpMyAdmin** 。如果你熟悉其他软件;你也可以用这个。
|
||
|
||
Xampp 软件提供了 PHPMyAdmin web 接口。你可以从这里[下载 XAMPP](https://www.apachefriends.org/download.html) 。
|
||
|
||
或者直接去 Google 搜索**下载 Xampp。**第一个环节本身就可以完成工作!!
|
||
|
||
下载适合您的操作系统和体系结构的正确版本。
|
||
|
||

|
||
|
||
Xampp
|
||
|
||
### 2.启动 Apache 和 MySQL
|
||
|
||
安装并加载 XAMPP 后,启动以下两个过程:
|
||
|
||
* **Apache web 服务器**–服务 HTTP 请求
|
||
* **MySQL 服务器**–用于数据库
|
||
|
||

|
||
|
||
Xampp
|
||
|
||
请注意 MySQL 的默认端口是 **3306。**现在在浏览器中,转到 **https://localhost** 。
|
||
|
||

|
||
|
||
Xampp Host Webpage
|
||
|
||
这是 Xampp 的主机网页。点击右上角**的 phpMyAdmin**,进入 php web 界面。
|
||
|
||

|
||
|
||
Phpmyadmin
|
||
|
||
这里,
|
||
|
||
* 点击左栏中的 **new** 创建一个新的数据库。
|
||
* 为数据库保留一个合适的名称。在我的情况下,它只是简单的**瓶**
|
||
|
||

|
||
|
||
Flask DB
|
||
|
||
继续在数据库中创建一个表。在如图所示的空白处输入表格名称,并点击 **Go。**
|
||
|
||
### 3.在我们的系统中安装 Flask- MySQL 库
|
||
|
||
Flask 使用 **flask_mysqldb** 连接器来使用 MySQL。运行以下命令来安装该软件包:
|
||
|
||
```py
|
||
pip install flask_mysqldb
|
||
|
||
```
|
||
|
||
完美!!
|
||
|
||
## 设置 Flask MySQL 数据库连接
|
||
|
||
现在,我们将连接并使用 MySQL 将数据存储到我们的数据库中。如果你不确定如何创建一个 flask 应用程序,查看一下 [flask 介绍教程](https://www.askpython.com/python-modules/flask/create-hello-world-in-flask)。
|
||
|
||
### 1.用 MySQL 连接 Flask 应用程序
|
||
|
||
我们连接 Flask-MySQL 的步骤如下:
|
||
|
||
```py
|
||
from flask import Flask,render_template, request
|
||
from flask_mysqldb import MySQL
|
||
|
||
app = Flask(__name__)
|
||
|
||
app.config['MYSQL_HOST'] = 'localhost'
|
||
app.config['MYSQL_USER'] = 'root'
|
||
app.config['MYSQL_PASSWORD'] = ''
|
||
app.config['MYSQL_DB'] = 'flask'
|
||
|
||
mysql = MySQL(app)
|
||
|
||
```
|
||
|
||
### 2.设置 MySQL 连接光标
|
||
|
||
仅仅通过上面的设置,我们无法与 DB 表进行交互。为此,我们需要一个叫做**光标**的东西。
|
||
|
||
所以 **Cursor** 为 Flask 提供了一种与 DB 表交互的方式。它可以扫描数据库数据,执行不同的 SQL 查询,以及删除表记录。
|
||
|
||
光标的使用方式如下:
|
||
|
||
```py
|
||
mysql = MySQL(app)
|
||
|
||
#Creating a connection cursor
|
||
cursor = mysql.connection.cursor()
|
||
|
||
#Executing SQL Statements
|
||
cursor.execute(''' CREATE TABLE table_name(field1, field2...) ''')
|
||
cursor.execute(''' INSERT INTO table_name VALUES(v1,v2...) ''')
|
||
cursor.execute(''' DELETE FROM table_name WHERE condition ''')
|
||
|
||
#Saving the Actions performed on the DB
|
||
mysql.connection.commit()
|
||
|
||
#Closing the cursor
|
||
cursor.close()
|
||
|
||
```
|
||
|
||
由于 MySQL 不是一个**自动提交**的数据库,我们需要手动提交,即保存由数据库上的**光标执行**所执行的更改/动作。
|
||
|
||
### 3.编写烧瓶应用程序
|
||
|
||
现在我们将构建一个小 Flask 应用程序,它将用户提交的数据存储在 MySQL DB 表中。考虑以下应用程序代码:
|
||
|
||
```py
|
||
from flask import Flask,render_template, request
|
||
from flask_mysqldb import MySQL
|
||
|
||
app = Flask(__name__)
|
||
|
||
app.config['MYSQL_HOST'] = 'localhost'
|
||
app.config['MYSQL_USER'] = 'root'
|
||
app.config['MYSQL_PASSWORD'] = ''
|
||
app.config['MYSQL_DB'] = 'flask'
|
||
|
||
mysql = MySQL(app)
|
||
|
||
@app.route('/form')
|
||
def form():
|
||
return render_template('form.html')
|
||
|
||
@app.route('/login', methods = ['POST', 'GET'])
|
||
def login():
|
||
if request.method == 'GET':
|
||
return "Login via the login Form"
|
||
|
||
if request.method == 'POST':
|
||
name = request.form['name']
|
||
age = request.form['age']
|
||
cursor = mysql.connection.cursor()
|
||
cursor.execute(''' INSERT INTO info_table VALUES(%s,%s)''',(name,age))
|
||
mysql.connection.commit()
|
||
cursor.close()
|
||
return f"Done!!"
|
||
|
||
app.run(host='localhost', port=5000)
|
||
|
||
```
|
||
|
||
当用户提交数据时,通过**光标将数据添加到 MySQL 数据库中。我的表名是 **info_table** 。**
|
||
|
||
**form.html**将是:
|
||
|
||
```py
|
||
<form action="/login" method = "POST">
|
||
<p>name <input type = "text" name = "name" /></p>
|
||
<p>age <input type = "integer" name = "age" /></p>
|
||
<p><input type = "submit" value = "Submit" /></p>
|
||
</form>
|
||
|
||
```
|
||
|
||
### 4.实施准则
|
||
|
||
现在启动服务器,进入“**/表格**”(*见[烧瓶表格](https://www.askpython.com/python-modules/flask/flask-forms)* )
|
||
|
||

|
||
|
||
Form
|
||
|
||
输入详细信息并点击提交
|
||
|
||

|
||
|
||
Success
|
||
|
||
现在让我们在 **phpMyAdmin** web 界面中检查一下
|
||
|
||

|
||
|
||
Php
|
||
|
||
完美!!
|
||
|
||
## 结论
|
||
|
||
就这样,伙计们!!这都是关于建立 Flask MySQL 连接。在下一篇文章中,我们将研究 Flask-PostgreSQL。
|
||
|
||
下次再见🙂 |