我有一个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。我不确定我在这里缺少什么。
答案 0 :(得分:1)
仅当脚本是主要调用脚本(例如通过控制台启动)时,if __name__ == '__main__':
语句的计算结果为True
。因此,只有在脚本为主要脚本的情况下,才执行在这种情况下发生的所有事情。
因此,这里发生的是,当在Flask应用程序中调用函数start_date
时,变量main()
从未被初始化。
您可以通过将参数传递给函数main()
(例如def main(start_date):
)并在Flask App中调用它来解决:fetch.main('01-JAN-14 00:00')
。