SQL Server 용 ODBC 드라이버 13을 사용하여 Python 3.5 스크립트로 Linux 서버 (Ubuntu 16.04.2)에서 SQL 데이터를 검색하려고합니다. Windows에서 SQL Server 및 Python으로 스크립트를 실행하면 문제가 없습니다. 리눅스에서 파이썬으로 스크립트를 실행하면 SQL Server 구문 오류가 발생합니다.Python3을 Ubuntu에서 SQL Server 2014에 연결
pyodbc.ProgrammingError : ('42000', [42000] [Microsoft] [SQL Server 용 ODBC 드라이버 13] [SQL Server] 0x107c '. (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]
동일한 웹 사이트의 반대 권고 사항을 참조하십시오. "여러 가지 파이썬 SQL 드라이버가 있지만, Microsoft는 테스트 노력과 pyodbc 드라이버에 대한 자신감을 갖고 있습니다." https://docs.microsoft.com/en-us/sql/connect/python/python-driver-for-sql-server – alys
안녕하세요, Shoof, 그것에 대해 잘 모르겠습니다. Windows 컴퓨터에서 나는 항상 pyodbc를 사용합니다. 그러나,이 목적을 위해 pymssql이 더 잘 작동합니다. 왜 나 한테 묻지 마. :) –