flask连接MySQL数据库

时间:2025-04-23 07:03:39

flask连接MySQL数据,新手优先推荐使用pymysql降低出错的几率

下载驱动包pymysql,在终端使用命令安装,安装命令如下

pip install pymysql

安装flask_sqlalchemy包,使得flask在使用sqlalchemy时更加方便

pip install flask-sqlalchemy

连接Mysql

新建flask项目,在中编写
导入模块SQLAlchemy

from flask_sqlalchemy import SQLAlchemy

创建SQLAlchemy实例对象,命名为db,将flask的实例对象app作为参数传给SQLAlchemy,将db和app联系起来,可以调用其相关功能

db = SQLAlchemy(app)

2.在python中配置数据库信息

# MySQL所在主机名,默认127.0.0.1
HOSTNAME = "127.0.0.1"
# MySQL监听的端口号,默认3306
PORT = 3306
# 连接MySQL的用户名,自己设置
USERNAME = "root"
# 连接MySQL的密码,自己设置
PASSWORD = "root"
# MySQL上创建的数据库名称
DATABASE = "database_learn"
# 通过修改以下代码来操作不同的SQL比写原生SQL简单很多 --》通过ORM可以实现从底层更改使用的SQL
['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"

使用数据库工具创建数据库并测试连接

with app.app_context():
    with () as conn:
        result = ("select 1")
        print(())  # (1,)

返回(1,),连接成功
完整代码块如下

from flask import Flask
from flask_sqlalchemy import  SQLAlchemy

app = Flask(__name__)

# MySQL所在主机名
HOSTNAME = "127.0.0.1"
# MySQL监听的端口号,默认3306
PORT = 3306
# 连接MySQL的用户名,自己设置
USERNAME = "root"
# 连接MySQL的密码,自己设置
PASSWORD = "password"
# MySQL上创建的数据库名称
DATABASE = "datebase_learn"
# 通过修改以下代码来操作不同的SQL比写原生SQL简单很多 --》通过ORM可以实现从底层更改使用的SQL
['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"

db = SQLAlchemy(app)

# 测试是否连接成功
with app.app_context():
    with () as conn:
        result = ("select 1")
        print(())  # (1,)

@('/')
def hello_world():  # put application's code here
    return 'Hello World!'

if __name__ == '__main__':
    ()

错误提示

报错提示:Not an executable object: ‘select 1’
在以下代码提示错误

db=SQLAlchemy(app)
with app.app_context():
    with () as conn:
        result = ("select 1")
        print(())

原因:'select 1’不是一个可执行的对象
解决方案:
文本sql的执行,需要使用sqlalchemy中的text()方法处理字符串,再执行语句
1.导入模块

from sqlalchemy import text

2.修改关键代码
result = ("select 1")
修改为以下代码

result = (text("select 1"))