【发布时间】:2016-05-11 08:41:57
【问题描述】:
我正在使用 SQLAlchemy(仅限核心,而不是 ORM)来创建与 SQL Server 2008 SP3 的连接。
查看进程的网络连接时,我注意到与 SQL Server(端口 1433)的 TCP/IP 连接保持打开状态 (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(Win7 上的 x32)
- SQLAlchemy 1.0.10
- pyODBC 3.0.10
编辑:我已经重写了我的代码以仅使用 pyODBC 而不是 SQLAlchemy + pyODBC,但问题仍然存在。据我所知,问题是由 pyODBC 保持连接打开引起的。
【问题讨论】:
标签: python python-3.x sqlalchemy pyodbc