eme*_*hex 35 sql-server odbc pyodbc python-3.x anaconda
当我尝试使用pyodbc(在mac上)连接到sql server数据库时:
import pyodbc
server = '####'
database = '####'
username = '####@####'
password = '#####'
driver='{ODBC Driver 13 for SQL Server}'
pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+password)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误:('01000',"[01000] [unixODBC] [驱动程序管理器]无法打开lib'用于SQL Server的ODBC驱动程序13':找不到文件(0)(SQLDriverConnect)")
当我在实际的驱动程序位置路径时:
driver='/usr/local/lib/libmsodbcsql.13.dylib'
Run Code Online (Sandbox Code Playgroud)
它开始工作了!
我odbcinst.ini看起来像这样:
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/usr/local/lib/libmsodbcsql.13.dylib
UsageCount=1
Run Code Online (Sandbox Code Playgroud)
如何让我参考driver='{ODBC Driver 13 for SQL Server}'再次开始工作?
我最初使用本指南来安装驱动程序.如果有帮助的话,我在Mac Sierra上使用anaconda?
eme*_*hex 51
运行:
odbcinst -j
Run Code Online (Sandbox Code Playgroud)
它产生了:
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /Users/emehex/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
Run Code Online (Sandbox Code Playgroud)
而不是将文件复制到/etc/目录(不知道为什么unixODBC认为他们在那里)我创建了一个指向每个文件的符号链接:
sudo ln -s /usr/local/etc/odbcinst.ini /etc/odbcinst.ini
sudo ln -s /usr/local/etc/odbc.ini /etc/odbc.ini
Run Code Online (Sandbox Code Playgroud)
这解决了这个问题.
Uzz*_*der 30
在我的情况下,我必须将pyodbc数据库驱动程序字符串更改为
driver='{ODBC Driver 17 for SQL Server}'
实际上,在我的python代码中,pyodbc期待ODBC驱动程序13
但是,由于ODBC驱动程序版本已更新(因为ubuntu更新)到当前版本的ODBC驱动程序17,因此出现了问题.
Ren*_* B. 18
就我而言,我有一个Mac OS,以下命令解决了该问题:
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql mssql-tools
Run Code Online (Sandbox Code Playgroud)
小智 5
就我而言,我通过以下三个步骤解决了该问题:
# Step1: install unixodbc
brew install unixodbc
# Step2: install Microsoft ODBC Driver for SQL Server on MacOS
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
brew install msodbcsql mssql-tools
# Step3?verify odbcinst configuration path is correct
odbcinst -j
sudo ln -s /usr/local/etc/odbcinst.ini /etc/odbcinst.ini
sudo ln -s /usr/local/etc/odbc.ini /etc/odbc.ini
Run Code Online (Sandbox Code Playgroud)
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list >
/etc/apt/sources.list.d/mssql-release.list
apt-get update
ACCEPT_EULA=Y apt-get install msodbcsql17
apt-get -y install unixodbc-dev
sudo apt-get install python3-pip -y
pip3 install --upgrade pyodbc
Run Code Online (Sandbox Code Playgroud)
使用上述步骤正确安装 odbc 驱动程序,一切都会就位。
我在 Python 之上构建了一个自定义图像,这是使其工作的配置:
FROM python:3.8 as pyodbc
COPY . /app
WORKDIR /app
# Required for msodbcsql17 and mssql-tools
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
# Key might change in the future, replace with new one on the logs
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA6932366A755776
RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
RUN apt-get install unixodbc-dev
RUN pip install pipenv
RUN pipenv install --system --deploy
CMD [ "python" , "__init__.py"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49258 次 |
| 最近记录: |