config flask app with a app.config.from_object

Question:

I have a flask app with MySQL DB i want to config my app with config.formobject(object)
Then, I write the following class:

import os

    class Config:
        DEBUG = True
        TESTING = False
        SESSION_COOKIE_SECURE = True
        SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:tool789@localhost/city'"
        SQLALCHEMY_TRACK_MODIFICATIONS = False
        SECRET_KEY = os.urandom(24)
        MAIL_SERVER = "Yourdomain"
        MAIL_USERNAME = "username"
        MAIL_PASSWORD = "password"
        MAIL_PORT = 456
        MAIL_USE_SSL = True
        MAIL_USE_TSL = False

and import it to my _init_.py here :

from flask import Flask
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail, Message
from app.config import *
app = Flask(__name__)
Bootstrap(app)

db = SQLAlchemy(app)
app.config.from_object(Config)

from app import views
from app import admin_views
from app.dbmodels import *

with app.app_context():
    db.create_all()

when I run my server, I get this error :

Traceback (most recent call last):
  File "C:UsersPouryaPycharmProjectswebsiteprojectrun.py", line 1, in <module>
    from app import app
  File "C:UsersPouryaPycharmProjectswebsiteprojectapp__init__.py", line 10, in <module>
    db = SQLAlchemy(app)
  File "C:UsersPouryaPycharmProjectswebsiteprojectvenvlibsite- 
    packagesflask_sqlalchemyextension.py", line 219, in __init__
     self.init_app(app)
   File "C:UsersPouryaPycharmProjectswebsiteprojectvenvlibsite- 
    packagesflask_sqlalchemyextension.py", line 307, in init_app
     raise RuntimeError(
 RuntimeError: Either 'SQLALCHEMY_DATABASE_URI' or 'SQLALCHEMY_BINDS' must be set.

what is my problem and who can I fix it ?

Asked By: Pourya Mohamadi

||

Answers:

You are creating your db client using the app‘s configuration, but you haven’t configured app yet. Try configuring app first:

app.config.from_object(Config)
db = SQLAlchemy(app)
Answered By: Danielle M.