I am adding the SQLAlchemy component to my code. App is configuring from an object. The object hasn’t changed. The logging.debug output shows a valid app.config
. But I’m getting an error when init_app(app)
is run. It says it’s a string obj?
# error msg
db = SQLAlchemy(app)
^^^^^^^^^^^^^^^
File "....venvLibsite-packagesflask_sqlalchemyextension.py", line 278, in __init__
self.init_app(app)
File "....venvLibsite-packagesflask_sqlalchemyextension.py", line 339, in init_app
for key, value in config_binds.items():
^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'items'
# app.py
app = Flask("archive_tool")
app.config.from_object(AppConfig)
logging.debug(f"{app.config = }")
db = SQLAlchemy(app)
db.init_app(app)
# ma = Marshmallow(app)
# api = Api(app)
# logging output
Manually edited for this post. The original values for WindowsPaths and secret key work correctly.
app.config = <Config {'DEBUG': False, 'TESTING': False, 'PROPAGATE_EXCEPTIONS': None, 'SECRET_KEY': '******', 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'USE_X_SENDFILE': False, 'SERVER_NAME': None, 'APPLICATION_ROOT': '/', 'SESSION_COOKIE_NAME':
'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': None, 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'TEMPLATES_AUTO_RELOAD': None, 'MAX_COOKIE_SIZE': 4093, 'APPHOST': '127.0.0.1', 'ASSETSPATH': WindowsPath('./archive_tool/assets'), 'CSRF_ENABLED': True, 'DBPATH': WindowsPath('./archive_tool/bookshelf.db'), 'DBURI': 'sqlite:///archive_tool\bookshelf.db', 'DOWNLOADBASE': WindowsPath('./BookshelfTool_Output/HTMLDownloads'), 'HOSTPORT': 5000, 'PROCESSEDBASE': WindowsPath('./BookshelfTool_Output/ProcessedArchive'), 'PROJECTPATH': WindowsPath('.'), 'SERVERNAME': '127.0.0.1:5000', 'SQLALCHEMY_BINDS': '127.0.0.1:5000', 'SQLALCHEMY_DATABASE_URI': WindowsPath('./archive_tool/bookshelf.db'), 'SQLALCHEMY_ECHO': True, 'SQLALCHEMY_TRACK_MODIFICATIONS': False, 'SRCPATH': WindowsPath('./archive_tool'), 'UTILSPATH': WindowsPath('./archive_tool/utils')}>