python pyodbc:如何连接到特定实例
我正在尝试连接到一个特定的SQL Server实例,并从系统表中获取一些数据。我使用了以下代码片段来连接:
connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102;DATABASE=master;INSTANCE=instance1;UID=sql2008;PWD=password123;Trusted_Connection=yes')
...
cursorObj.execute("select * from sys.dm_os_sys_info")
row = cursorObj.fetchone()
print("rows from table ",row)
但是我只得到了默认实例的值,而无法获取'instance1'的值。所以在'INSTANCE=instance1'中给出实例名称似乎没有任何效果。即使不写这个(我试过写'PORT=1443',这是实例的端口号),我仍然只得到了默认SQL Server实例的值。请问如何强制它获取特定实例的值呢?
1 个回答
37
身份验证
首先,你提供了 uid
/pwd
(SQL Server身份验证)和 trusted_connection
(Windows身份验证)。你只能选择其中一种,不能同时使用。接下来的例子我将假设使用SQL Server身份验证。
连接字符串
使用实例名称连接到命名实例 instance1:
connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102\instance1;DATABASE=master;UID=sql2008;PWD=password123')
使用TCP/IP和端口号 1443 连接到命名实例:
connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102,1443;DATABASE=master;UID=sql2008;PWD=password123')
关键词替代
pyodbc.connect() 支持关键词,我觉得这样更容易阅读,而且如果你使用变量来设置连接字符串的属性,就不需要进行字符串格式化:
命名实例:
connSqlServer = pyodbc.connect(driver='{SQL Server Native Client 10.0}',
server='192.106.0.102\instance1',
database='master',
uid='sql2008',pwd='password123')
TCP/IP端口:
connSqlServer = pyodbc.connect(driver='{SQL Server Native Client 10.0}',
server='192.106.0.102,1443',
database='master',
uid='sql2008',pwd='password123')