将Ubuntu上的python3连接到SQL Server 2014
我正在尝试在Linux服务器(Ubuntu 16.04.2)上使用SQL Server的ODBC驱动程序13在Python 3.5脚本中检索SQL数据。在windows中的SQL Server和Python上运行该脚本很好。在Linux中以Python运行脚本会引发SQL Server语法错误: pyodbc.ProgrammingError:('42000',“[42000][Microsoft][SQL Server的ODBC驱动程序13][SQL Server]靠近'0x107c'的语法不正确”。(102)(SQLExecDirectW)” 当我添加或删除列时,它会将“0x107c”更改为不同的字符,这表明它不是单个非法字符,而是多个非法字符。脚本运行的列数更为有限(不包括[Order Type text]和[Order Nr])。这让我怀疑字符集转换中出现了问题。我做错了什么?我如何修复它 蟒蛇3.5:将Ubuntu上的python3连接到SQL Server 2014,python,sql-server,python-3.x,ubuntu,pyodbc,Python,Sql Server,Python 3.x,Ubuntu,Pyodbc,我正在尝试在Linux服务器(Ubuntu 16.04.2)上使用SQL Server的ODBC驱动程序13在Python 3.5脚本中检索SQL数据。在windows中的SQL Server和Python上运行该脚本很好。在Linux中以Python运行脚本会引发SQL Server语法错误: pyodbc.ProgrammingError:('42000',“[42000][Microsoft][SQL Server的ODBC驱动程序13][SQL Server]靠近'0x107c'的语法不
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]
解决方案供将来参考。不要在Linux上使用pyodbc连接到MS SQL Server。改用pymssql。此处的说明: 我在同一个网站上看到了相反的建议。“有几种python SQL驱动程序可用。但是,微软将其测试工作和信心放在pyodbc驱动程序上。”嗨,肖夫,我对此不确定。在Windows机器上,我总是使用pyodbc。然而,出于这个目的,pymssql工作得更好。别问我为什么:)