LINUX通过python连接ACCESS(.mdb和.accdb文件)数据库

前言

因为ACCESS主要还是微软的那一套,所以WIN平台的连接方式不再赘述,网上方案很多。

LINUX上的连接,主要还是分为ODBC和JDBC

ODBC方案

包安装

linux需安装的包:mdbtools, unixODBC, libmdbodbc
python需安装的包:pyodbc或pypyodbc

配置

配置/etc/odbcinst.ini

[MDBToolsODBC]
Description = MDB Tools ODBC
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage =
CPTimeout =
CPReuse =

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

[mytest]
Description = Microsoft Access Try DB
Driver = MDBToolsODBC
Database = /path/mytest.mdb
Servername = localhost
Username =
Password =
port = 5432

DEMO代码

import pyodbc
conn = pyodbc.connect('DSN=mytest');
cur = conn.cursor()
cur.execute('select * from test')
cur.fetchall()

JDBC方案

驱动下载

UCanAccess JDBC驱动程序下载

实现方案

有两种方法可以实现:JayDeBeApi和Jython.

JayDeBeApi(推荐)

包安装

pip install JPype1==0.6.3 JayDeBeApi==1.1.1
--JPype1的更高版本存在问题,所以安装0.6.3版本

PS:还需要jre环境

DEMO代码如下:

import jaydebeapi

db_path = "/path/mytest.mdb"

ucanaccess_jars = [
    "/path/UCanAccess-4.0.4-bin/ucanaccess-4.0.4.jar",
    "/path/UCanAccess-4.0.4-bin/lib/commons-lang-2.6.jar",
    "/path/UCanAccess-4.0.4-bin/lib/commons-logging-1.1.3.jar",
    "/path/UCanAccess-4.0.4-bin/lib/hsqldb.jar",
    "/path/UCanAccess-4.0.4-bin/lib/jackcess-2.1.11.jar",
    ]
classpath = ":".join(ucanaccess_jars)
conn = jaydebeapi.connect(
    "net.ucanaccess.jdbc.UcanaccessDriver",
    f"jdbc:ucanaccess://{db_path}",
    ["", ""],
    classpath
    )
cur = cnxn.cursor()
cur.execute("select * from test")
cur.fetchall()

Jython

Jython是Python的单独实现,它只支持Python 2.7,目前不再处于活动开发阶段。从某种意义上说执行不是python程序了,而是jython程序,所以这里不进行详细描述。

你可能感兴趣的:(大数据技术)