在 Flask 中连接 MySQL 数据库
通过这个解释,我们将学习如何在 flask_mysqldb
的帮助下在 Flask 中连接 MySQL 数据库。我们还将学习如何在线设置数据库。
借助 flask_mysqldb
在 Flask 中连接 MySQL 数据库
有时用户希望直接在 SQL 中编写查询,而不是使用诸如 sql-alchemy
之类的东西,因此无论出于何种原因,你都可以选择编写查询 SQL。在 Flask 中,mysqldb
允许你这样做。
现在我们将在名为 freemysqlhosting.net
的服务上创建一个免费的 MySQL 数据库。你可以使用此链接访问该网站。
创建帐户后,你将看到如下所示的屏幕,当你创建数据库时,你将在 15 分钟内收到一封包含你的数据库信息的电子邮件。
现在我们将使用这个数据库来获取我们的 Flask 应用程序中的信息。我们要做的第一件事是安装一个名为 Flask-MySQLdb
的模块。
pip install Flask-MySQLdb
现在我们需要导入所需的库:
from flask import Flask
from flask_mysqldb import MySQL
现在我们将创建一个应用程序实例并使用 MySQL(app)
类实例化该应用程序。如果你正在使用多个 Flask 应用程序,你还可以使用以下代码来指定你的 Flask 应用程序:
mysql = MySQL()
mysql.init_app(app)
但是我们将所有内容都放在一个文件中,因此我们不需要这样做。由于我们正在使用数据库,因此我们需要设置配置。
首先,我们需要定义 MYSQL_USER
,然后我们需要 MYSQL_PASSWORD
。我们还需要定义数据库所在的 MYSQL_HOST
;它可以在你的本地计算机上,也可以在我们已经设置的单独服务上或其他任何地方。
我们也有数据库本身,所以我们必须定义数据库的名称。我们会添加一些不必要的额外配置,这有助于获取返回的数据。
它只需要元组,但在涉及数据库时字典更容易使用,因为列可以是键,而这些键的值将是特定列中的值。如果我们不添加任何内容,则默认采用元组。
app.config['MYSQL_USER'] = 'user_name'
app.config['MYSQL_PASSWORD'] = 'user_password'
app.config['MYSQL_HOST'] = 'sql3.example.net'
app.config['MYSQL_DB'] = 'Database_name'
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
mysql = MySQL(app)
可以放端口,但是 MySQL 数据库默认使用 3306,所以我们不需要更新任何东西。现在我们要与数据库交互,因此我们将创建路由并创建一个名为 CONNECT_DB()
的函数,并且要与数据库交互,我们需要使用游标。
游标将允许我们执行语句以获取这些语句的结果。我们将创建一个名为 CS
的变量并使用 mysql.connection.cursor()
对其进行实例化,我们还将创建一个表并将其命名为 TABLE_NAME
,我们将定义几个列。
@app.route('/')
def CONNECT_DB():
CS = mysql.connection.cursor()
CS.execute('''CREATE TABLE TABLE_NAME (id INTEGER, name VARCHAR(20))''')
我们已经创建了表并将数据插入到表中。然后,我们需要在插入数据或更新或删除后提交。
当数据插入数据库时,我们还将返回一个字符串。
CS.execute('''INSERT INTO TABLE_NAME VALUES (1, 'Harry')''')
CS.execute('''INSERT INTO TABLE_NAME VALUES (2, 'Arthor')''')
mysql.connection.commit()
return 'Executed successfully'
让我们继续运行服务器,看看浏览器是否返回了字符串。确保你的互联网连接已连接。
我们将需要验证数据是否已插入数据库。现在将进行查询以选择表。
由于我们将检索多行,我们可以使用 fetchall()
。我们将把所有信息放入 Executed_DATA
变量中。
我们将其打印到控制台并显示返回值:
CS.execute('''SELECT * FROM TABLE_NAME''')
Executed_DATA = CS.fetchall()
print(Executed_DATA)
return str(Executed_DATA[1]['name'])
让我们保存并刷新页面。我们可以看到显示的值,如果我们在控制台中向下看,我们可以看到一个包含两个项目的元组。
完整的 Python 代码:
from flask import Flask
from flask_mysqldb import MySQL
app = Flask(__name__)
app.config['MYSQL_USER'] = 'user_name'
app.config['MYSQL_PASSWORD'] = 'user_password'
app.config['MYSQL_HOST'] = 'sql3.example.net'
app.config['MYSQL_DB'] = 'Database_name'
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
mysql = MySQL(app)
# mysql.init_app(app)
@app.route('/')
def CONNECT_DB():
CS = mysql.connection.cursor()
# CS.execute('''CREATE TABLE TABLE_NAME (id INTEGER, name VARCHAR(20))''')
# CS.execute('''INSERT INTO TABLE_NAME VALUES (1, 'Harry')''')
# CS.execute('''INSERT INTO TABLE_NAME VALUES (2, 'Arthor')''')
# mysql.connection.commit()
# return 'Executed successfully'
CS.execute('''SELECT * FROM TABLE_NAME''')
Executed_DATA = CS.fetchall()
print(Executed_DATA)
return str(Executed_DATA[1]['name'])
if __name__=='__main__':
app.run(debug=True)
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn