配置 ubuntu odbc 和 pypyodbc

作者: , 共 793 字

1. 安装分为三步

1.1. 第一步、安装ODBCFreeTDS模块

sudo apt-get install tdsodbc unixodbc

1.2. 第二步、修改/etc/odbcinst.ini

[FreeTDS] Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so

1.3. 第三步、修改/etc/freetds/freetds.conf

[Global] TDS_Version = 8.0 client charset = UTF-8

2. pypyodbc 的安装和使用

2.1. pypyodbc 安装

pip install pypyodbc

2.2. pypyodbc 示例代码

import pypyodbc 
conn = pypyodbc.connect('Driver=FreeTDS;Server=192.168.1.2;port=1433;uid=sa;pwd=pwd1;database=db_name') 
print conn.cursor().execute('select * from a_table').fetchone()[0]

2.3. pypyodbc 的中文乱码问题

一个烦心事情是 pypyodbc 查询到的中文结果都显示为问号乱码,下面的代码可以解决这个问题。但会导致无法正常获取查询结果的字段名称(curser.description结果异常)。由于修改了 sys 全局设置,目前不清楚是否还有其它副作用。

import sys
reload(sys)
sys.setdefaultencoding('utf8')

pyodbc.connect(connStr,unicode_results=True, charset="utf8")

Q. E. D.

类似文章:
Excel、Matlab 在与数据库交互数据时,通常需要事先配置好 ODBC 数据源,这导致一个文件换到另一台机器还需要重新配置 ODBC。手工配置太麻烦,从国外一个网站看到一种解决方案:
相似度: 0.110
boost是除std外最常用的 C++库,覆盖很多常用操作。目前最新的版本是1.59.0
2014-03-25 更新:我已经将该类修改成函数形式,并增加新功能,参见更新 Excel 的数据库查询函数库
Matlab 的 database 工具箱只支持 ODBC 数据库连接,在使用之前需要先设置 ODBC 数据源。之前在 Excel 里用的是 ADODB ,使用 ADODB 的好处是无需设置 ODBC 源,似乎效率也要高一些(但我一直没弄懂 ADODB 是什么东西,所以效率这东西我也说不清)。
相似度: 0.082
armadillo是一个线性代数 C++库,封装了blaslapack,提供更直观的接口。
更新一下之前写的Excel 的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一年多,已经比较健壮。若有问题,请留言指出或与我联系。
IT » WSL, SSH
世界上最好的 Linux 发行版 Bash on Windows 已经升级到了 Ubuntu 18.04 ,并且提供越来越多的功能。下面是笔记,记录如何启动子系统的 SSHD 服务并设置开机自动启动,也顺带开机自动启动了子系统。
编程 » Linux, Vim, 文件编码
由于 UNICODE 的优势,目前推荐都用 UTF-8 进行编码。
编程 » C++, 内存检查, Linux
获取程序占用的内存量,是一个诡异的需求。但程序写多了,有时候还真需要,尤其是代码运行出现问题的时候。
编程 » Excel
在编辑 Excel 文件时经常遇到的一个问题是,我这边用得好好地,换台机器就变了个样,或者根本用不了。下面是我在日常工作中总结的一些避免这些情况的小技巧。
boost是除std外最常用的 C++库,覆盖很多常用操作。目前最新的版本是1.59.0
编程 » GIT
git经常出现类似于HEAD detached at origin/development的错误提示。这是因为当前的 HEAD 没有位于任何一个分支上的缘故。