在MacOS上如何通过Python操作SqlServer
python操作ms-sqlserver或者ms-access等这类windows系的数据库,通常都要借助ODBC实现,也就是首先要在系统上配置一个ODBC的数据源,然后通过pyodbc来连接数据库。
但是对于在MacOS上进行开发的同学,想配置原生的ODBC数据源就不可能了,所以在MacOs上如何通过pyodbc连接sqlserver呢?这里就要借助FreeTDS和UnixODBC这两个工具,简单讲这两个工具配合使用,就可以完成在MacOS上配置一个odbc的dsn。
具体的操作步骤如下
1 2 3 | brew update brew install unixodbc brew install freetds --with-unixodbc |
这里一定要注意–with-unixodbc 要加上,否则后面可能会报so库找不到的问题
编辑freetds.conf文件,如果是上面用brew安装的,这个文件通常都在/usr/local/Cellar/freetds/<version>/etc/freetds.conf 下,如果找不到可以执行tsql -C看看
[MYMSSQL]
host = mssqlhost.xyz.com
port = 1433
tds version = 7.3
编辑完后 执行tsql -S MYMSSQL -U myuser -P mypassword 可以测试是否配置正确,如果看到
locale is “en_US.UTF-8”
locale charset is “UTF-8”
using default charset “UTF-8”
1>
表示配置ok,接着编辑odbcinst.ini和odbc.ini
运行odbcinst -j命令获得这两个配置文件的路径,然后编辑odbcinst.ini为如下内容
[FreeTDS]
Description=FreeTDS Driver for Linux & MSSQL
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
UsageCount=1
其中这里如果提示libtdsodbc.so打不开 或者找不到,那就是之前安装freetds的时候没有加–with-unixodbc选项
编辑odbc.ini为如下内容
[MYMSSQL]
Description = Test to SQLServer
Driver = FreeTDS
Servername = MYMSSQL
其中的MYMSSQL要换成你之前在freetds中对应配置的, 这个MYMSSQL也就会作为你在python中连接pyodbc的dsn
运行 isql MYMSSQL myuser mypassword 测试以上的整个配置,如果显示connected!xxxxxxx。。。
那就表示ok。然后就可以在python中操作了,比如
1 2 3 | import pyodbc # the DSN value should be the name of the entry in odbc.ini, not freetds.conf conn = pyodbc.connect('DSN=MYMSSQL;UID=myuser;PWD=mypassword') |