Closed
Description
Environment
- Python: 3.6.8
- pyodbc: 4.0.30
- unixodbc: 2.3.7
- OS: Ubuntu 18.04
- DB: SQL Server Azure
- driver: ODBC Driver 17 for SQL Server
Issue
I am refactoring some old code to handle SQL connection in a more consistent manner. Now, I have read about connection pooling and I wanted to check whether this was supported. In order to check this, I have run the following code:
import pyodbc
def runQuery(con, query, parameters=None):
result = list()
if parameters is None:
parameters = ()
with con.cursor() as cur:
cur.execute(query, parameters)
column_names = [col[0] for col in cur.description]
result = [
dict(zip(column_names, row))
for row in cur.fetchall()
]
return result
conn1 = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};'
f'SERVER={server};'
f'DATABASE={database};'
f'UID={username};'
f'PWD={password}')
with conn1:
result1 = runQuery(conn1, 'SELECT @@SPID')
print(result1)
conn2 = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};'
f'SERVER={server};'
f'DATABASE={database};'
f'UID={username};'
f'PWD={password}')
with conn2:
result2 = runQuery(conn2, 'SELECT @@SPID')
print(result2)
which results in
[{'': 76}]
[{'': 79}]
Is this the correct way of testing whether connection pooling is being used? If so, does this in fact indicate that this is not the case here?
My odbcinst.ini
file contains the following:
[ODBC]
Pooling=Yes
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.4.so.1.1
UsageCount=1
Any help would be greatly appreciated. Thanks!