我一直在玩pyodbc,出于某种原因,当我试图连接时,如果我从input((获得Server属性,它就找不到服务器,但如果我使用相同的服务器名称并在使用前将其声明为变量,它可以使用完全相同的代码。有人知道这里发生了什么吗?
带输入的代码((
import pyodbc
driver = '{ODBC Driver 17 for SQL Server}'
instance = input("Please Enter your SQL Instance: ")
connectionstring = f'Driver={driver}; Server={instance}; Trusted_Connection=yes'
conn = pyodbc.connect(connectionstring)
cursor = conn.cursor()
cursor.execute('SELECT name FROM sys.databases')
for row in cursor:
print(row)
输出从Input((编码输出服务器名称
带变量的代码
import pyodbc
driver = '{ODBC Driver 17 for SQL Server}'
instance = 'DESKTOP-J7PBL8S\NORTHWIND'
connectionstring = f'Driver={driver}; Server={instance}; Trusted_Connection=yes'
conn = pyodbc.connect(connectionstring)
cursor = conn.cursor()
cursor.execute('SELECT name FROM sys.databases')
for row in cursor:
print(row)
输出变量中的代码输出服务器名称
我曾尝试在输入上使用str((,但没有成功。不太清楚为什么我从输入中获取服务器名称时不喜欢,因为它返回一个字符串,而连接字符串与工作代码完全相同。
我有点好奇为什么在任何真正的项目上都不想使用input((
我尝试过:
ins1 = input("Please Enter your SQL Instance: ")
ins2 = 'DESKTOP-J7PBL8S\NORTHWIND'
print(ins1)
print(ins2)
然后通过DESKTOP-J7PBL8S\NORTHWIND
作为输入,输出为:
DESKTOP-J7PBL8S\NORTHWIND
DESKTOP-J7PBL8SNORTHWIND
所以我认为我们发现了问题。input()
返回原始字符串,而不考虑的特殊含义。
因此,如果您只使用一个->
DESKTOP-J7PBL8SNORTHWIND
,那么您应该能够连接到预期的服务器。