私はMS SQL Server Management Studioを使用して.sqlファイルとして保存されたクエリがあります。Python経由のMS SQL pyodbc:なぜ構文が間違っていると言っているのですか?
select distinct *
from bom.SalesBOMSampleExplosion b
を、私はpyodbcパッケージを使用してのpython経由でファイルを読み取ろうとしました。私の他のクエリは、このクエリを除いてほぼ同じ設定で正常に実行されます。 ここで私が使用Pythonのコードです:次のエラーを
server = 'sampleserver'
db = 'sampledb'
Data = sp.sql_reader(os.path.join(qry_path, 'Data.sql'), server_name=server, database=db)
:
def sql_reader(qry_file, server_name, database):
server = db.connect(str('DRIVER={SQL Server};SERVER='+server_name+';DATABASE='+database+';'))
qry = open(qry_file,'r').read()
data = pd.read_sql(qry,server)
return data
が、私は関数を使用すると、SQLファイルを呼び出すデシベルとしてPD 輸入pyodbcとして
輸入パンダはメッセージは次のように続きます。
Traceback (most recent call last):
File "C:/Users/Documents/landlordlady/python codes/test.py", line 8, in <module>
QPVData = sp.sql_reader(os.path.join(qry_path, '8-28 qpv test.sql'), server_name=server, database=db)
File "C:\Users\Documents\landlordlady\python codes\sql_processor.py", line 30, in sql_reader
data = pd.read_sql(qry,server)
File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\io\sql.py", line 399, in read_sql
chunksize=chunksize)
File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\io\sql.py", line 1436, in read_query
cursor = self.execute(*args)
File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\io\sql.py", line 1413, in execute
raise_with_traceback(ex)
File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\compat\__init__.py", line 340, in raise_with_traceback
raise exc.with_traceback(traceback)
File "C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\io\sql.py", line 1401, in execute
cur.execute(*args)
pandas.io.sql.DatabaseError: Execution failed on sql 'ÿþ
s e l e c t d i s t i n c t *
f r o m b o m . S a l e s B O M S a m p l e E x p l o s i o n b
': ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'e'. (102) (SQLExecDirectW)")
Process finished with exit code 1
私はとても混乱しています!このエラーはどのような構文ですか?
を生成します。おそらくutf-16のどこかでutf-8が予想されていたかもしれません。あるいは、誤ってあなたの文字列にスペースを挿入しているかもしれません。 – user2357112
@ user2357112どうすればこの問題を解決できますか? – alwaysaskingquestions
.sqlファイルを作成するためにどのエディタを使用しましたか?さらに明確にするために、使用したPythonコードを追加できますか? – RageCage