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}
이 링크들을 확인해 보세요.비슷한 고민을 해결해주었습니다.
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.rpm
REHL 버전에 따라 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 입니다.
'source' 카테고리의 다른 글
.NET WPF 세션 간 창 크기 기억 (0) | 2023.05.05 |
---|---|
모든 디렉토리 및 파일을 재귀적으로 복사하려면 어떻게 해야 합니까? (0) | 2023.04.25 |
WPF 창의 핸들을 찾는 중입니다. (0) | 2023.04.25 |
WPF C#: 끌어서 놓기를 통해 목록 상자의 항목을 재정렬합니다. (0) | 2023.04.25 |
Eclipse git 체크아웃(일명 되돌리기)입니다. (0) | 2023.04.25 |