Linux上安装和使用pyodbc
2021年05月14日
现在直接用:conda install pyodbc,就可以安装pyodbc了,不用这么麻烦了,下面的可以忽略了。
别人写的python代码,其中使用到了pyodbc驱动,原有的代码:
1 | #!/usr/bin/python3 |
当我使用conda安装了pyodbc依赖后,执行python名路,结果出现了:pyodbc.Error: (‘01000’, “[01000] [unixODBC][Driver Manager]Can’t open lib ‘SQL Server’ : file not found (0) (SQLDriverConnect)”) 错误。于是就开始了解决pyodbc连接的问题。
刚开始的时候,我使用了在微软官方提供了脚本下,将下面的内容保存为pyodbc_install.sh,在终端中执行bash pyodbc_install.sh。
1 | sudo su |
最后成功了,但还是报错,连接不上
1.Linux python3 - Can’t open lib ‘SQL Server’ (这里涉及到了一个ODBC-Driver-13-for-Ubuntu)
2.R: [unixODBC][Driver Manager]Can’t open lib ‘SQL Server’ : file not found
3.pyodbc.Error: (‘01000’, “[01000] [unixODBC][Driver Manager]Can’t open lib ‘driver’ : file not found (0) (SQLDriverConnect)”)
4.odbc.ini Connection String Keywords (unixODBC) (这里有odbc的配置说明,端口说明)
5.win10操作系统的ODBC数据源配置sqlserver数据库
问题二:Data source name not found
1.有关unixODBC:Data source name not found, and no default driver specified的问题 (关于Data source name not found问题的解决方案)
2.odbc.ini Connection String Keywords (unixODBC) (和上篇一样)
几经周折,最终还是解决了。我的系统是CentOS8,主要参考了下面的几篇文章
1 | ## 查看系统版本 |
1.Install the Microsoft ODBC driver for SQL Server (Linux) (微软提供的方法)
2.Connecting to SQL Server from RHEL 6 or Centos 7 (这篇文章还讲了如何配置odbc源)
3.Connecting to SQL Server from Python app on CentOS 7 (这篇和上篇差不多,但是多了How to uninstall the Microsoft ODBC Driver for Linux)
4.安装 Microsoft ODBC Driver for SQL Server (Linux) (这也是微软的安装方法)
1.分别执行下面的命令,安装unixODBC
1 | curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo |
注意
注意其中的msodbcsql17,这个地方下面还要用的。
2.设置软连接
1 | # the Microsoft driver expects unixODBC to be here /usr/lib64/libodbc.so.1, so add soft links to the '.so.2' files |
3.设置unixODBC的配置文件路径
1 | # Set the path for unixODBC |
4.编写一个临时文件
随便找一个地方,编写一个odbcadd.txt文件,然后填写如下的内容,注意Driver,因为我安装的是mssqlserver17,所以写了ODBC Driver 17 for SQL Server,如果对应不上,会报错。其中的Server,填写服务的连接地址和ip,端口用逗号隔开。
1 | # Prepare a temp file for defining the DSN to your database server |
5.注册配置文件
将上面的写的配置文件,注册到/etc/odbc.ini中
1 | # register the SQL Server database DSN information in /etc/odbc.ini |
6.检查配置
执行下面的两条命令,检查自己的配置
1 | # check the DSN installation with: |
注意
如果安装和配置完成之后,还是提示没有:Data source name not found and no default driver specified,记得另开一个终端,执行相关的命令。
7.安装pyodbc
使用pip命令安装pyodbc,或者如果使用的是conda,那么就使用conda安装pyodbc,必要的时候可能还需要安装gcc,gcc++
1 | # install the python driver for database connection |
8.使用pyodbc
1 | #!/usr/bin/python3 |
最后成功打印:
9.卸载
这个我没试
1 | rm -f /usr/bin/sqlcmd |