Skip to content

Commit 984e16a

Browse files
committed
Add SQLAlchemy 2.0 support
SQLAlchemy 2.0 unified the execute() API - Connection.execute() no longer accepts **kwargs, requiring parameters as a dict instead. Uses packaging library for robust version detection.
1 parent 85ab44f commit 984e16a

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

jsql/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
import logging
77
import six
88
import itertools, collections
9+
import sqlalchemy
10+
from packaging import version
11+
12+
_SA_VERSION = version.parse(sqlalchemy.__version__)
913

1014
class UnsafeSqlException(Exception):
1115
pass
@@ -82,6 +86,8 @@ def dangerously_inject_sql(value):
8286
def execute_sql(engine, query, params):
8387
from sqlalchemy.sql import text
8488
q = text(query)
89+
if _SA_VERSION.major >= 2:
90+
return engine.execute(q, params)
8591
is_session = 'session' in repr(engine.__class__).lower()
8692
return engine.execute(q, params=params) if is_session else engine.execute(q, **params)
8793

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
author_email='hzarka@gmail.com',
88
packages = find_packages(),
99
package_dir = {'': '.'},
10-
requires = ["six"],
11-
install_requires = ["six"],
10+
requires = ["six", "packaging"],
11+
install_requires = ["six", "packaging"],
1212
classifiers=[
1313
'Development Status :: 3 - Alpha',
1414
'Environment :: Web Environment',

0 commit comments

Comments
 (0)