gpt4 book ai didi

python - 在 Flask 启动时执行 MySQL 创建存储过程

转载 作者:行者123 更新时间:2023-11-29 18:13:57 28 4
gpt4 key购买 nike

当我启动 Flask 应用程序(及其 HTTP 服务器)时,我希望它在考虑处理任何 URL 路由之前读取并执行 MySQL 文件(恰好包含存储过程定义),但我不能了解如何执行此操作。 @app.before_first_request 需要访问一个路由才能运行这个初始化函数,所以这对我来说是不可能的。

我的应用程序是这样开始的:

from flask import Flask, request, redirect, url_for, render_template

app = Flask(__name__)
app.config.from_object('config')

from flask_mysqldb import MySQL
mysql = MySQL()
mysql.init_app(app)

# Create stored procedures from file
with open('stored_procedures.sql', 'r') as sql:
procs = sql.read().split(';')
cursor = mysql.connection.cursor()
for proc in procs:
cursor.execute(proc)
cursor.close()

# Lots of routing functions follow

当我启动应用程序时,收到的错误是:

AttributeError: 'NoneType' object has no attribute 'cursor'

cursor = mysql.connection.cursor()行上,我认为这意味着mysql还没有“初始化”,或者其他我不太明白的东西。如果我省略这个初始化函数(并预先将所有存储过程手动放入 MySQL 数据库中,则一切正常,包括所有 MySQL 函数,因此文件的 MySQL 语法或任何其他应用程序配置问题都不是问题据我所知。

非常感谢任何帮助。

最佳答案

根据文档,mysql.connection 在创建连接失败时返回 None。由于您给出的代码看起来是正确的,我怀疑问题与 python 代码无关,而更可能是您的配置对象或 MySQL 数据库中的问题。

尝试在同一台计算机上使用 mysql 命令行界面连接到数据库,并使用与您尝试在 python 中连接的相同凭据。

  • 如果不成功,给出的错误消息将对您寻找解决方案更有帮助。
  • 如果成功,问题可能出在您的 config 对象中。验证配置是否与您用于从命令行连接的配置匹配。

关于python - 在 Flask 启动时执行 MySQL 创建存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47178361/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com