From 82f3871a83bf234983f8d63d2f1861d876a52fb1 Mon Sep 17 00:00:00 2001 From: Kevin Morris Date: Thu, 13 May 2021 21:11:57 -0700 Subject: [PATCH] Support SQLAlchemy 1.4 URL.create recommendation This fixes a deprecating warning when using SQLAlchemy 1.4. Signed-off-by: Kevin Morris --- .coveragerc | 1 + aurweb/db.py | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.coveragerc b/.coveragerc index 9dcfca18..69c153ce 100644 --- a/.coveragerc +++ b/.coveragerc @@ -6,3 +6,4 @@ include = aurweb/* fail_under = 85 exclude_lines = if __name__ == .__main__.: + pragma: no cover diff --git a/aurweb/db.py b/aurweb/db.py index 7993dfdb..49e0abd2 100644 --- a/aurweb/db.py +++ b/aurweb/db.py @@ -16,9 +16,18 @@ def get_sqlalchemy_url(): Build an SQLAlchemy for use with create_engine based on the aurweb configuration. """ import sqlalchemy + + constructor = sqlalchemy.engine.url.URL + + parts = sqlalchemy.__version__.split('.') + major = int(parts[0]) + minor = int(parts[1]) + if major == 1 and minor >= 4: # pragma: no cover + constructor = sqlalchemy.engine.url.URL.create + aur_db_backend = aurweb.config.get('database', 'backend') if aur_db_backend == 'mysql': - return sqlalchemy.engine.url.URL( + return constructor( 'mysql+mysqlconnector', username=aurweb.config.get('database', 'user'), password=aurweb.config.get('database', 'password'), @@ -29,7 +38,7 @@ def get_sqlalchemy_url(): }, ) elif aur_db_backend == 'sqlite': - return sqlalchemy.engine.url.URL( + return constructor( 'sqlite', database=aurweb.config.get('database', 'name'), )