11from __future__ import annotations
22
3- from sqlalchemy import create_engine
3+ from sqlalchemy import create_engine , text
44from sqlalchemy .pool import QueuePool
55from sqlalchemy .orm import scoped_session , sessionmaker
66
@@ -34,12 +34,12 @@ def __init__(
3434
3535 self .engine = create_engine (
3636 dsn , poolclass = QueuePool , pool_size = 5 , max_overflow = 5 ,
37- isolation_level = SERIALIZABLE ,
37+ isolation_level = SERIALIZABLE , future = True ,
3838 ** (engine_config or {})
3939 )
4040
4141 self .session = scoped_session (sessionmaker (
42- bind = self .engine , ** (session_config or {})
42+ bind = self .engine , future = True , ** (session_config or {}),
4343 ))
4444
4545 def stop_service (self ) -> None :
@@ -58,20 +58,21 @@ def stop_service(self) -> None:
5858 def get_postgres_version (self , dsn : str ) -> tuple [str , int ]:
5959 """ Returns the postgres version as a tuple (string, integer).
6060
61- Uses it's own connection to be independent from any session.
61+ Uses its own connection to be independent from any session.
6262
6363 """
6464 assert 'postgres' in dsn , 'Not a postgres database'
6565
66- query = """
66+ query = text ( """
6767 SELECT current_setting('server_version'),
6868 current_setting('server_version_num')
69- """
69+ """ )
7070
71- engine = create_engine (dsn )
71+ engine = create_engine (dsn , future = True )
7272
7373 try :
74- result = engine .execute (query ).first ()
74+ with engine .connect () as conn :
75+ result = conn .execute (query ).first ()
7576 assert result is not None
7677 version , number = result
7778 return version , int (number )
0 commit comments