因为ACCESS主要还是微软的那一套,所以WIN平台的连接方式不再赘述,网上方案很多。
LINUX上的连接,主要还是分为ODBC和JDBC
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
import pyodbc
conn = pyodbc.connect('DSN=mytest');
cur = conn.cursor()
cur.execute('select * from test')
cur.fetchall()
UCanAccess JDBC驱动程序下载
有两种方法可以实现:JayDeBeApi和Jython.
包安装
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是Python的单独实现,它只支持Python 2.7,目前不再处于活动开发阶段。从某种意义上说执行不是python程序了,而是jython程序,所以这里不进行详细描述。