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