python pyodbc:如何连接到特定的实例

时间:2014-08-26 11:46:15

标签: python sql 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实例的值。如何强制它获取特定实例的值?

2 个答案:

答案 0 :(得分:16)

验证

首先,您提供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')

使用端口号 1443

使用TCP / IP连接到命名实例
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')

答案 1 :(得分:-1)

所以已经花了几个小时了,真的很奇怪。 mmv_sat的额外斜杠对我有用,以防其他人使用

Server =“ IP地址...两个正斜杠... instance_name”