Shu*_*deo 7 python sql-server ubuntu unixodbc pyodbc
我想从我的测试脚本进行数据迁移mssql-server到oracle server.为此,我必须pyodbc python为Ubuntu安装包,它具有依赖性unixodbc.当我尝试安装unixodbc-dev使用时:
sudo apt-get install unixodbc-dev
Run Code Online (Sandbox Code Playgroud)
它给出了破坏的包错误:
The following packages have unmet dependencies:
unixodbc-dev : Depends: unixodbc (= 2.3.1-4.1)
Depends: odbcinst1debian2 (= 2.3.1-4.1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Run Code Online (Sandbox Code Playgroud)
但是使用aptitude(sudo aptitude install unixodbc-dev)它正在安装并删除一些SQL服务器文件,因为我的文件SQL-server发生故障.
再次SQL server使用此命令安装:
sudo apt-get install mssql-server mssql-tools -y
Run Code Online (Sandbox Code Playgroud)
它删除unixodbc:
Removing unixodbc-dev (2.3.1-4.1) ...
Removing unixodbc (2.3.1-4.1) ...
Removing libodbc1:amd64 (2.3.1-4.1) ...
Removing odbcinst (2.3.1-4.1) ...
Removing odbcinst1debian2:amd64 (2.3.1-4.1) ...
Run Code Online (Sandbox Code Playgroud)
因此,我只剩下SQL-server和没有 unixodbc(pyodbc不起作用).我知道两个软件包之间存在一些依赖性问题.
有没有办法在同一台机器上安装两台机器,还是必须在这里使用2台机器?
小智 6
我没有安装 Sql 服务器,但是当我想在新机器上安装 pyodbc 时,我也无法安装它。有人提出以下建议(我无法确切地告诉我在哪里找到它):
sudo apt-get install unixodbc-dev
sudo pip install pyodbc
Run Code Online (Sandbox Code Playgroud)
最后,我只从微软的网站上获得了解决方案.以下是unixodbc使用mssql 进行设置的方法Ubuntu 16.04:
sudo apt-get install unixodbc-dev-utf16
Run Code Online (Sandbox Code Playgroud)
在此之后,我可以轻松安装pyodbc:
pip install pyodbc
Run Code Online (Sandbox Code Playgroud)
在Microsoft的网页上列出了使用和安装Microsoft ODBC Driverfor SQL Serverfor Linux系统的方法.
这是Ubuntu 16.04我发现的最简单的安装方法:
sudo su
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
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql mssql-tools
sudo apt-get install unixodbc-dev-utf16 #this step is optional but recommended*
Run Code Online (Sandbox Code Playgroud)