source

Linux python3 - lib 'SQL Server'를 열 수 없습니다.

manysource 2023. 4. 25. 22:37

Linux python3 - lib 'SQL Server'를 열 수 없습니다.

Microsoft Azure SQL Server 데이터베이스에 연결하려고 합니다.

연결 방법은 다음과 같습니다.

 conn = pyodbc.connect('DRIVER={SQL Server};SERVER=%s' % (self.config.get("Sql", "DataSource")),
                        user= self.config.get("Sql", "UserId"),
                        password=self.config.get("Sql", "Password"),
                        database=self.config.get("Sql", "Catalog"))

이 라인을 방전하는 동안 오류가 발생합니다.오류는 다음과 같습니다.

pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found (0) (SQLDriverConnect)")

왜 이런 일이 일어나는지 모르겠어요, 짐작 가는 거 없어요?

교체하다DRIVER={SQL Server}와 함께DRIVER={/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1}

업데이트 - 2022년 12월입니다.

ODBC 드라이버에 대한 현재 설치 지침은 여기에 있습니다.


또한 ODBC 드라이버를 설치한 다음 pyodbc를 사용하는 것이 좋습니다.Ubuntu 15.04+ 기계 위에 있을 것으로 추정됩니다.

ODBC 드라이버를 설치하려면 다음 지침을 따릅니다.

sudo su
wget https://gallery.technet.microsoft.com/ODBC-Driver-13-for-Ubuntu-b87369f0/file/154097/2/installodbc.sh
sh installodbc.sh

그런 다음 pip을 사용하여 pyodbc를 설치하고 다음 스크립트를 사용해 보십시오.

import pyodbc
server = 'tcp:myserver.database.windows.net'
database = 'mydb'
username = 'myusername'
password = 'mypassword'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT @@version;")
row = cursor.fetchone()
while row:
    print row
    row = cursor.fetchone()

어떻게 되어가는지 알려주세요.

건배.
만나서

다운로드 종속성은 플랫폼에 따라 다릅니다(다른 OS의 경우 종속성 다운로드).

Ubuntu에 대한 다음 예제는 다음과 같습니다.

# sudo su 
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#Ubuntu 14.04
# curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Ubuntu 16.04
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

# #Ubuntu 18.04
# curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

# #Ubuntu 18.10
# curl https://packages.microsoft.com/config/ubuntu/18.10/prod.list > /etc/apt/sources.list.d/mssql-release.list

# #Ubuntu 19.04
# curl https://packages.microsoft.com/config/ubuntu/19.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install unixodbc-dev

그리고 변화하죠

DRIVER={/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1} 

DRIVER={ODBC Driver 17 for SQL Server}

이 링크들을 확인해 보세요.비슷한 고민을 해결해주었습니다.

무료 설치입니다.TDS입니다.

Free를 사용하여 SQL-Azure에 연결합니다.TDS입니다.

오프라인 REHL 서버를 사용하는 경우 다음 방법에 따라 Microsoft SQL Server에 대한 연결을 설정하십시오.

UNIXODBC 및 MSQLTools 패키지를 다운로드합니다.unixODBC-2.3.7-1.rh.x86_64.rpm/mssql-tools-17.9.1.1-1.x86_64.rpmREHL 버전에 따라 https://packages.microsoft.com/rhel/,에서 확인하십시오.

다운로드한 파일을 winscp 또는 ssh 클라이언트를 통해 REHL 서버에 저장합니다.

아래 주어진 순서대로 이 두 파일을 설치하십시오.

yum localinstall unixODBC-2.3.7-1.rh.x86_64.rpm
yum localinstall mssql-tools-17.9.1.1-1.x86_64.rpm)

설치 폴더로 이동하여 에 표시된 대로 경로를 복사합니다.

/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1

다음 경로를 코드에 넣습니다.

driverpath = r"/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1"

당신의 문제는 해결될 거예요.

이 게시물은 답변이 허용되지만, Ubuntu 20.04에서 Python 3.8을 실행하는 저에게는 작동하지 않았습니다.몇 가지 시도를 해봤지만 결국 보안상의 문제였던 것 같습니다SSL 패키지입니다.다음은 제가 추천하는 단계입니다.

열려 있는지 확인합니다.SSL 버전입니다.리눅스 콘솔에서 이 작업을 수행합니다.

openssl version

문제가 된 버전은 제 시스템에서 1.1.1f였습니다.해당 버전이 사용 중인 경우 다음 명령을 사용하여 업데이트하십시오.

wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz -O openssl-1.1.1p.tar.gz
tar -zxvf openssl-1.1.1p.tar.gz
cd openssl-1.1.1p
./config
make
sudo make install
sudo ldconfig
openssl version

그런 다음 /etc/ssl/openssl.cnf를 편집해야 합니다. 이 항목을 처음에 넣으십시오.

openssl_conf = default_conf

그리고 이게 마지막이에요.

[ default_conf ]

ssl_conf = ssl_sect

[ssl_sect]

system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT:@SECLEVEL=0

말씀드렸듯이, 제게는 효과가 있었어요.다른 사람에게도 도움이 되길 바랍니다.

안녕하세요. 사용 가능한 ODBC 드라이버의 최신 버전을 검색하여 반환하거나 오류를 발생시키는 이 스니펫을 사용하고 있습니다.

def select_driver():
    """Find least version of: ODBC Driver for SQL Server."""
    drv = sorted([drv for drv in pyodbc.drivers() if "ODBC Driver " in drv and " for SQL Server" in drv])
    if len(drv) == 0:
        raise Exception("No 'ODBC Driver XX for SQL Server' found.")
    return drv[-1]

print(select_driver())  # ODBC Driver 17 for SQL Server

언급URL : https://stackoverflow.com/questions/38534154/linux-python3-cant-open-lib-sql-server 입니다.