我試圖在使用SQL Server的ODBC驅動程序13的Python 3.5腳本中的Linux服務器(Ubuntu 16.04.2)上檢索SQL數據。在Windows上運行SQL Server和Python腳本並沒有問題。在Linux中運行Python腳本會引發SQL Server語法錯誤:將Ubuntu上的python3連接到SQL Server 2014
pyodbc.ProgrammingError:('42000',「[42000] [Microsoft] [ODBC驅動程序13 for SQL Server] [SQL Server]錯誤的語法靠近' (102)(SQLExecDirectW)「)
當我添加或刪除列時,它將'0x107c'更改爲不同的字符,暗示它不是一個非法字符,而是幾個。在腳本數量有限的情況下,腳本甚至會運行(排除[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
嗨Shoof,我不確定這一點。在Windows機器上,我總是使用pyodbc。但是,爲此,pymssql更好。不要問我爲什麼:) –