在Linux中通过Python脚本访问mdb数据库的方法


Posted in Python onMay 06, 2015

在 linux 系统中连接 mdb 数据库,直接连接的话,mdb 默认的驱动无法识别非 windows 的路径, 所以不能使用常规的连接方式

DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\\dir\\file.mdb

安装

这里我们需要借助一些库来实现第三方的驱动

我们需要安装这些包:mdbtools, unixODBC, libmdbodbc

如果是支持 deb 的系统中,如果不能找到 libmdbodbc ,将以下路径加入到软件源列表中

deb http://ftp.de.debian.org/debian squeeze main

更新源后即可可以安装 libmdbodbc 了
配置

安装了需要的包后,需要做一些配置,才能支持 libmdbodbc 的驱动

/etc/odbcinst.ini
[MDBToolsODBC]

Description = MDB Tools ODBC

Driver = /usr/lib/libmdbodbc.so.0

Setup =

FileUsage =

CPTimeout =

CPReuse =

/etc/odbc.ini 或者 ~/.odbc.ini

[test]

Description = Microsoft Access Try DB

Driver = MDBToolsODBC

Database = /path/to/mdb/file/test.mdb

Servername = localhost

Username =

Password =

port = 5432

代码

配置好数据源后,就可以用于任何支持 odbc 访问的应用中了,这里以 pyodbc 为例

#-*- coding: utf-8 -*-
import pyodbc

conn = pyodbc.connect('DSN=test');
cursor = conn.cursor()
cursor.execute('select * from "省"')
for row in cursor.fetchall():
 print row.Name

注:如果是操作名称中文的表或者字段等,需要将其包含在双引号中,不然会出错,当然,将表名做成中文这么二的做法, 还是不推荐使用的啦

pyodbc 是个很不错的库,api 也很好用,不过对中文支持的并不好,它并没有默认以 unicode 处理数据,所以对于中文相关的应用, 编码问题无处不在,只得慢慢折腾了。

Python 相关文章推荐
Python检测QQ在线状态的方法
May 09 Python
python实现简单http服务器功能
Sep 17 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
Aug 07 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
python梯度下降算法的实现
Feb 24 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
Python 调用C++封装的进一步探索交流
Mar 04 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
Jun 08 Python
python中黄金分割法实现方法
May 06 #Python
使用rpclib进行Python网络编程时的注释问题
May 06 #Python
pymongo给mongodb创建索引的简单实现方法
May 06 #Python
Python中用PIL库批量给图片加上序号的教程
May 06 #Python
python写入中英文字符串到文件的方法
May 06 #Python
python使用xlrd模块读写Excel文件的方法
May 06 #Python
在Python中使用全局日志时需要注意的问题
May 06 #Python
You might like
php抓即时股票信息
2006/10/09 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
解析php类的注册与自动加载
2013/07/05 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
js局部刷新页面时间具体实现
2013/07/04 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
详解Python中time()方法的使用的教程
2015/05/22 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
python xlsxwriter模块的使用
2020/12/24 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
战友聚会邀请函
2014/01/18 职场文书
2014年情人节活动方案
2014/02/16 职场文书
小学安全教育材料
2014/02/17 职场文书
《灰雀》教学反思
2016/02/19 职场文书
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
Nginx实现负载均衡的项目实践
2022/03/18 Servers
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android
JAVA springCloud项目搭建流程
2022/05/11 Java/Android