草庐IT

python pyodbc : how to connect to a specific instance

coder 2023-08-16 原文

我正在尝试连接到 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 实例的值。如何强制它获取特定实例的值?

最佳答案

身份验证

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

关于 python pyodbc : how to connect to a specific instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25505081/

有关python pyodbc : how to connect to a specific instance的更多相关文章

随机推荐