SQL ServerのODBCドライバ13を使用して、Python 3.5スクリプトでLinuxサーバ(Ubuntu 16.04.2)でSQLデータを取得しようとしています。 WindowsでSQL ServerとPythonでスクリプトを実行するとうまくいく。 LinuxでPythonでスクリプトを実行すると、SQL Server構文エラーが発生するPython3をUbuntu上でSQL Server 2014に接続する
pyodbc.ProgrammingError:( '42000'、[42000] [Microsoft] [SQL Server用のODBCドライバ13] [SQL Server] "0x107c '。)(102)(SQLExecDirectW)")
列を追加または削除すると、' 0x107c 'が異なる文字に変更され、1つの違法な文字ではなく複数の文字になります。文字列の量が限られているので、スクリプトは実行されます([Order Type text]と[Order Nr]は除外されます)。私は間違って何をしているのですか?どうすれば修正できますか?
Python3.5:
import pandas as pd
import pyodbc
#Set parameters
sql_file = 'file.sql'
#Define methods
def SQLDataToDataframe(filename):
fd = open('file.sql','r')
content = fd.read()
fd.close()
df = pd.read_sql(content, connection)
return df
#Import Data from SQL
connection = pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};'
'Server=Server;'
'Database=DB;'
'uid=User;pwd=Password')
dataframe = SQLDataToDataframe(sql_file)
file.sql:今後の参考のため
SELECT [ID]
,[Company Code]
,[Description]
,[Order Category]
,[Order Category Text]
,[Order Type]
,[Order Type text]
,[Order Nr]
FROM [TABLE]
私は同じウェブサイトの反対の勧告を参照してください。 「PythonのSQLドライバはいくつか用意されていますが、マイクロソフトはpyodbcドライバにテストの努力と信頼を置いています。 https://docs.microsoft.com/en-us/sql/connect/python/python-driver-for-sql-server – alys
こんにちは、私はそれについてはよく分かりません。 Windowsマシンでは、私はいつもpyodbcを使います。しかし、この目的のためにpymssqlがうまく機能します。なぜ私に尋ねないでください:) –