diff --git a/jsql/__init__.py b/jsql/__init__.py index b103431..ad9870b 100644 --- a/jsql/__init__.py +++ b/jsql/__init__.py @@ -6,6 +6,10 @@ import logging import six import itertools, collections +import sqlalchemy +from packaging import version + +_SA_VERSION = version.parse(sqlalchemy.__version__) class UnsafeSqlException(Exception): pass @@ -81,7 +85,12 @@ def dangerously_inject_sql(value): def execute_sql(engine, query, params): from sqlalchemy.sql import text + from sqlalchemy.engine import Engine q = text(query) + if _SA_VERSION.major >= 2: + if isinstance(engine, Engine): + raise TypeError("SQLAlchemy 2.0 removed Engine.execute(). Pass a Connection instead.") + return engine.execute(q, params) is_session = 'session' in repr(engine.__class__).lower() return engine.execute(q, params=params) if is_session else engine.execute(q, **params) diff --git a/setup.py b/setup.py index ba7e5d6..d0acf3f 100644 --- a/setup.py +++ b/setup.py @@ -7,8 +7,8 @@ author_email='hzarka@gmail.com', packages = find_packages(), package_dir = {'': '.'}, - requires = ["six"], - install_requires = ["six"], + requires = ["six", "packaging"], + install_requires = ["six", "packaging"], classifiers=[ 'Development Status :: 3 - Alpha', 'Environment :: Web Environment',