Я использую SQLAlchemy (только Core, а не ORM) для создания соединения с SQL Server 2008 SP3.SQLAlchemy/pyODBC не освобождает соединение с базой данных
При рассмотрении сетевых подключений процесса я заметил, что соединение TCP/IP с SQL Server (порт 1433) остается открытым (ESTABLISHED
).
Пример кода:
from urllib.parse import quote_plus
from sqlalchemy.pool import NullPool
import sqlalchemy as sa
# parameters are read from a config file
db_params = quote_plus(';'.join(['{}={}'.format(key, val) for key, val in db_config.items()]))
# Hostname based connection
engine = sa.create_engine('mssql:///?odbc_connect={}'.format(db_params),
poolclass=NullPool)
conn = engine.connect()
conn.close()
engine.dispose()
engine = None
Я добавил NullPool
и engine.dispose()
потом, думая, что они могли бы решить сохраняющиеся связь, но увы.
Я использую как соединение на основе имени хоста, как указано here.
Версии:
- Python 3.5.0 (x32 на Win7)
- SQLAlchemy 1.0.10
- pyODBC 3.0.10
Edit: Я я переписал мой код, чтобы использовать pyODBC исключительно вместо SQLAlchemy + pyODBC, и проблема остается. Насколько я вижу, проблема связана с тем, что pyODBC поддерживает соединение.