Zatricion
Zatricion

Reputation: 142

Heroku: relation does not exist

I am using Python, Flask, and the Peewee ORM. My DATABASE_URL is set correctly.

I have tested the functionality on a local server and it works correctly. When I deploy to Heroku, it errors out on the table that Peewee creates in the if name == main section of my app.

The error is:

ProgrammingError: relation "connection" does not exist (connection 
is the name of my model/would-be table).

UPDATE: I fixed the problem by creating the table in the views.py file under the specific route. Is this necessary? I would prefer a cleaner way.

Upvotes: 2

Views: 968

Answers (1)

Day
Day

Reputation: 9703

I've never used Heroku, but I'm guessing that Heroku is importing your app in some way that bypasses the if __name__ == "__main__" block which is only run when this module is run directly. You should try moving the logic from that if block into a before_first_request handler so that it will still be run, but only once (per worker / app instance)

@app.before_first_request
def initialize():
    app.logger.info("Creating the tables we need")
    ...

Upvotes: 1

Related Questions