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程序,所以這裏不進行詳細描述。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章