Jea*_*ean 12 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)
Run Code Online (Sandbox Code Playgroud)
但是我只获取默认实例的值,但无法获取'instance1'的值.因此,在'INSTANCE = instance1'中给出实例名称似乎没有任何效果.即使没有它(尝试给出'PORT = 1443',实例的端口号),我只获取默认SQL Server实例的值.如何强制它获取特定实例的值?
Bry*_*yan 18
首先,您提供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')
Run Code Online (Sandbox Code Playgroud)
使用端口号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')
Run Code Online (Sandbox Code Playgroud)
pyodbc.connect()支持关键字,我认为这些更易于阅读,如果您使用连接字符串属性的变量,则不必进行任何字符串格式化:
命名实例:
connSqlServer = pyodbc.connect(driver='{SQL Server Native Client 10.0}',
server='192.106.0.102\instance1',
database='master',
uid='sql2008',pwd='password123')
Run Code Online (Sandbox Code Playgroud)
TCP/IP端口:
connSqlServer = pyodbc.connect(driver='{SQL Server Native Client 10.0}',
server='192.106.0.102,1443',
database='master',
uid='sql2008',pwd='password123')
Run Code Online (Sandbox Code Playgroud)