Я пытаюсь получить данные SQL на Linux Server (Ubuntu 16.04.2) в сценарии Python 3.5 с использованием драйвера ODBC 13 для SQL Server. Запуск сценария на SQL Server и Python в Windows идет хорошо. Запуск сценария в Python в Linux вызывает ошибку синтаксиса SQL Server:Подключение python3 к Ubuntu к SQL Server 2014
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft] [драйвер ODBC 13 для SQL Server] [SQL Server] Неверный синтаксис рядом с ' 0x107c '. (102) (SQLExecDirectW) ")
Поскольку я добавляю или удаляю столбцы, он меняет« 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]
Я вижу противоположную рекомендацию с того же сайта. «Доступно несколько драйверов SQL для python. Однако Microsoft ставит свои усилия по тестированию и уверенность в драйвере pyodbc». https://docs.microsoft.com/en-us/sql/connect/python/python-driver-for-sql-server – alys
Привет, Shoof, я не уверен в этом. На машинах Windows я всегда использую pyobbc. Однако для этого pymssql работает лучше. Не спрашивайте меня, почему :) –