2017-09-05 45 views
3

我试图连接到SQL数据库略有不同的方式:使用和不使用参数。为什么不使用参数工作正常,但使用参数 - 给我一个错误。 我犯了语法错误吗? 我经历了每封信,看不到任何东西。提供DSN和SERVER关键字Python3

import pandas as pd 
import pyodbc 

#parameters: 
server = 'SQLDEV' 
db = 'MEJAMES' 

#Create the connection 
conn = pyodbc.connect('DRIVER={SQL Server};server =' + server + ';DATABASE = ' + db + ';Trusted_Connection=yes;') 
# query db 
sql = """ 

select top 10 PolicyNumber, QuoteID, ProducerName from tblQuotes 

""" 
df = pd.read_sql(sql,conn) 
df 

上述声明给我一个错误enter image description here

但如果我这样做,但没有使用参数,然后正常工作:

import pandas as pd 
import pyodbc 

#parameters: 
#server = 'SQLDEV' 
#db = 'MEJAMES' 

#Create the connection 
conn = pyodbc.connect("DRIVER={SQL Server};server=SQLDEV;database=MEJAMES;Trusted_Connection=yes;") 
# query db 
sql = """ 

select top 10 PolicyNumber, QuoteID, ProducerName from tblQuotes 

""" 
df = pd.read_sql(sql,conn) 
df 

enter image description here

+0

尝试删除'server'关键字后面的空格,即'...; server ='+ server + ...'而不是'...; server ='+ server + ...'。 –

+0

它的工作。我不相信Python是如此挑剔的语言。我甚至不会考虑这一点。你能回答吗,我会接受是正确的。非常感谢您的帮助。 – Oleg

+0

这将是在这种情况下挑剔的SQLServer,而不是Python,它并不重要.. – thebjorn

回答

3

在Windows ODBC驱动程序管理器对连接字符串中的关键字非常挑剔。他们必须马上跟着等号,所以SERVER=...将工作,但SERVER =...不会。