python pyodbc:如何连接到特定实例
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/25505081/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
python pyodbc : how to connect to a specific instance
提问by Jean
Am trying to connect to a specific instance of SQL Server and get some data from system tables. Am connecting using this code snippet:
我正在尝试连接到 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)
however am getting the values for the default instance only, but not able to get the value for 'instance1'. So, giving instance name in 'INSTANCE=instance1' really seems to have no effect. Even without it (tried giving 'PORT=1443', the instance's port number), am getting the values only for the default SQL Server instance. How to force it to get the values for the specific instance?
但是,我仅获取默认实例的值,但无法获取“instance1”的值。因此,在 'INSTANCE=instance1' 中给出实例名称似乎真的没有效果。即使没有它(尝试提供实例的端口号 'PORT=1443'),我也只能获取默认 SQL Server 实例的值。如何强制它获取特定实例的值?
采纳答案by Bryan
Authentication
验证
First, you're providing both uid/pwd(SQL Server authentication) and trusted_connection(Windows authentication). Pick one, you can't use both. I'll assume SQL Server authentication for the following examples.
首先,您提供uid/ pwd(SQL Server 身份验证)和trusted_connection(Windows 身份验证)。选一个,你不能两个都用。对于以下示例,我将假设 SQL Server 身份验证。
Connection strings
连接字符串
Connecting to named instance instance1using the instance name:
使用实例名称连接到命名实例instance1:
connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102\instance1;DATABASE=master;UID=sql2008;PWD=password123')
Connecting to named instance using TCP/IP using the port number 1443:
使用 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')
Keyword alternative
关键字替代
pyodbc.connect()supports keywords, I think these are easier to read and you don't have to do any string formatting if you're using variables for connection string attributes:
pyodbc.connect()支持关键字,我认为这些更容易阅读,如果您使用变量作为连接字符串属性,则不必进行任何字符串格式化:
Named instance:
命名实例:
connSqlServer = pyodbc.connect(driver='{SQL Server Native Client 10.0}',
server='192.106.0.102\instance1',
database='master',
uid='sql2008',pwd='password123')
TCP/IP port:
TCP/IP 端口:
connSqlServer = pyodbc.connect(driver='{SQL Server Native Client 10.0}',
server='192.106.0.102,1443',
database='master',
uid='sql2008',pwd='password123')

