首页 > 解决方案 > 无法从 Flask 执行 python 脚本

问题描述

我有一个 Flask 应用程序,它将在后台执行另一个 python 脚本并从数据库中获取数据以显示给用户。该脚本失败,因为它无法初始化局部变量。

获取API.py

import FetchDataFor_P_NAME as fetch
from flask import Flask
app = Flask(__name__)

@app.route('/batch21')
def fetchBatch21Data():
    return fetch.main()

if __name__ == '__main__':
    app.run()

FetchDataFor_P_NAME.py

def main():
    '''some statements to fetch data using the start_date'''
    query = query.replace('?', "'" + start_date + "'")

if __name__ == '__main__':
    '''some statements'''
    start_date = '01-JAN-14 00:00'
    main()

每当我执行 Flask 应用程序并调用页面 /batch21 时,我都会收到以下错误:

query = query.replace('?', "'" + start_date + "'")
NameError: name 'start_date' is not defined

这是我第一次在 Python 中使用 API。我不确定我在这里缺少什么。

标签: pythonapiflaskflask-restful

解决方案


仅当脚本是调用的主要脚本时,该if __name__ == '__main__':语句才会评估,例如通过控制台启动。True因此,只有在脚本是主要脚本时,才会执行在这种情况下发生的所有事情。

因此,这里发生的情况是,当您在 Flask 应用程序中调用start_date该函数时,您的变量永远不会被初始化。main()

您可以通过将参数传递给您的函数来解决问题main(),例如def main(start_date):并在您的 Flask 应用程序中调用它,如下所示:fetch.main('01-JAN-14 00:00')


推荐阅读