2017-09-05 17 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

これはPythonではなく、この場合は厄介なSQLServerです。 – thebjorn

答えて

3

WindowsのODBCをドライバマネージャは、接続文字列のキーワードについて非常に悩ましいです。彼らは直ちに等号に従わなければならないので、SERVER=...が動作しますが、SERVER =...は動作しません。

関連する問題