我正在使用Python,Flask和Peewee ORM。我的DATABASE_URL设置正确。
我已在本地服务器上测试了该功能,但它可以正常工作。当我部署到Heroku时,它在Peewee在我的应用程序的if name == main
部分创建的表上出错。
错误是:
ProgrammingError: relation "connection" does not exist (connection
is the name of my model/would-be table).
更新:我通过在特定路由下的views.py文件中创建表来解决问题。这有必要吗?我更喜欢更清洁的方式。
答案 0 :(得分:1)
我从未使用过Heroku,但我猜测Heroku正以某种方式导入你的应用程序,绕过if __name__ == "__main__"
块,该块仅在直接运行此模块时运行。您应该尝试将逻辑从if
块移动到before_first_request
处理程序,以便它仍然可以运行,但只运行一次(每个worker / app实例)
@app.before_first_request
def initialize():
app.logger.info("Creating the tables we need")
...