python - 无法从 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。我不确定我在这里缺少什么。
解决方案
仅当脚本是调用的主要脚本时,该if __name__ == '__main__':
语句才会评估,例如通过控制台启动。True
因此,只有在脚本是主要脚本时,才会执行在这种情况下发生的所有事情。
因此,这里发生的情况是,当您在 Flask 应用程序中调用start_date
该函数时,您的变量永远不会被初始化。main()
您可以通过将参数传递给您的函数来解决问题main()
,例如def main(start_date):
并在您的 Flask 应用程序中调用它,如下所示:fetch.main('01-JAN-14 00:00')
。