无法从Flask执行python脚本

时间:2018-11-26 12:11:47

标签: python api flask flask-restful

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

FetchAPI.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​​。我不确定我在这里缺少什么。

1 个答案:

答案 0 :(得分:1)

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

因此,这里发生的是,当在Flask应用程序中调用函数start_date时,变量main()从未被初始化。

您可以通过将参数传递给函数main()(例如def main(start_date):)并在Flask App中调用它来解决:fetch.main('01-JAN-14 00:00')