将Ubuntu上的Python3连接到SQL Server 2014



我正在尝试在Python 3.5中使用SQL Server的ODBC驱动程序13在Python 3.5中检索SQL数据(Ubuntu 16.04.2)。在Windows中运行SQL Server和Python上的脚本很好。在Linux中以Python运行脚本会引发SQL Server语法错误:

pyodbc.programmingerror :('42000'," [42000] [Microsoft] [SQL Server的ODBC驱动程序13 [SQL Server] [SQL Server] [SQL Server]不正确的语法附近'0x107C'。(102)(102)(SQLEXEXECDIRECTW)

当我添加或删除列时,它将" 0x107C"更改为另一个字符,这表明它不是一个非法字符,而是几个。脚本甚至运行的列数量更高(排除[订单类型文本]和[订单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]

解决方案以供将来参考。请勿在Linux上使用PYODBC连接到MS SQL Server。改用PYMSSQL。在此处:https://learn.microsoft.com/en-us/sql/connect/connect/python/pymssql/step-1-configure-development-environment-formssql-pymssql-python-development。

相关内容

  • 没有找到相关文章

最新更新