engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
Base.metadata.bind = engineDBSession = sessionmaker(bind=engine)
@app.cli.command("generate_task_notifications")
def createTaskNotification(): # Run scheduled job for creating task
statuses.print('starting jobs')
generate_task_notifications()
print('scheduled jobs executed at '+ str(datetime.now()))
return
def generate_task_notifications():
session = DBSession()
upcoming_days_upto = int(session.query(SystemConfig).filter(SystemConfig.Key == e_SysConfig.UpcomingDay.Key).first().Value)
session.close()
return upcoming_days_upto
如果我运行与API端点相同的命令,那么它工作正常,但是当我尝试使用与flask命令相同的命令时,coming_days_upto会给出错误
AttributeError: 'NoneType' object has no attribute 'Value'
。
虽然数据库中有数据,但我使用 beekeeper studio 检查了相同的数据,因为我正在容纳 sqlite 数据库。
我尝试在 cli 命令函数内移动会话创建代码,但我很不幸,当尝试与 API 端点运行相同的代码时,它工作正常。
这表明您的查询结果是
None
。因此,Value
不是属性,因为 None
类型没有名为 Value
的属性。
您应该有条件地执行:
def generate_task_notifications():
session = DBSession()
res = session.query(SystemConfig).filter(SystemConfig.Key == e_SysConfig.UpcomingDay.Key).first()
if res is not None:
upcoming_days_upto = int(res.Value)
session.close()
return upcoming_days_upto
这确实避免了错误,但实际上可能无法解决您的问题,具体取决于问题是什么。这可能是一个格式不正确的查询,但如果没有数据库模型和过滤逻辑,我们无法诊断它。