Debian11用Python和ODBC操作ACCESS
安装系统支持包:
安装驱动程序管理器unixODBC
或IODBC
这里以编译安装unixODBC
为例。
下载并编译安装最新版本unixODBC-2.3.9
:1
2
3
4
5
6
7wget -P ~/下载/ http://www.unixodbc.org/unixODBC-2.3.9.tar.gz
cd ~/下载
gunzip unixODBC-2.3.9.tar.gz
tar xvf unixODBC-2.3.9.tar
cd unixODBC-2.3.9
./configure --prefix=/usr/local/unixODBC --enable-inicaching --enable-drivers --enable-driver-conf --enable-gui
make && make install
配置odbc.ini
和odbcinst.ini
文件
其中odbc.ini
位于~/.odbc.ini
,同时因为安装unixODBC
时路径配置在/usr/local/unixODBC
,因此在/usr/local/unixODBC/etc
路径下也存在;odbcinst.ini
位于/etc
[重要]和/usr/local/unixODBC/etc
路径下.
配置内容参考如下:
配置驱动文件odbcinst.ini
:
用命令odbcinst -q -d
可查看所有驱动 文件1
2
3
4
5
6[Access]
Description= ODBC DRIVER FOR Access
Driver=/usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so
Setup=
FileUsage=1
UsageCount=1
其中odbcinst.ini
配置中的[MDBToolsODBC]
和odbc.ini
中的Driver = MDBToolsODBC
保持一致;Driver=/usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so
中libmdbodbc.so
是安装odbc-mdbtools
后生成的文件。
路径参考:
在bullseye发行版中amd64硬件架构下的odbc-mdbtools软件包文件清单
配置连接文件odbc.ini
:
用命令odbcinst -q -s
可查看所有 连接 的数据文件
1 | [test] |
后面用Python
操作测试采用以下写法:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19[A1]
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so
Database = /path/to/test/Debian_odbc.mdb
[A2]
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmdbodbc.so
Database = /path/to/Debian_odbc.accdb
Servername =
Username =
Password =
port =
[A3]
Driver = Access
Database = /path/to/Debian_odbc.accdb
Servername =
Username =
Password =
port =
标题[A1]
和后面python
连接代码中DSN=A1
语句名称要一致。
安装odbc-mdbtools
和mdbtools
1 | sudo apt install odbc-mdbtools # 老包名称为:libmdbodbc1 |
或者参照下面步骤编译安装mdbtools
编译安装mdbtools
下载地址1
2
3
4
5
6
7
8# 安装支持
sudo apt install libtool automake autoconf bison unixodbc unixodbc-dev gawk
cd /path/to/mdbtools-1.0.0
# 编译
auto-apt run ./configure --prefix=/usr/local/mdbtools --with-unixodbc=/usr/local/unixODBC --enable-ltdl-install --enable-iconvperdriver --with-included-ltdl
make
# 安装并生成安装包
sudo checkinstall错误待解决: 已经解决
错误提示:1
2
3......
checking for SQLGetPrivateProfileString in -lodbcinst... no
configure: error: Could not find SQLGetPrivateProfileString in -lodbcinst
解决:安装系统支持包1
sudo apt install libtool automake autoconf bison unixodbc unixodbc-dev gawk
参照:mdbtools开源项目地址
安装后测试:
终端上测试:
命令:1
isql -v test
输出:1
2
3
4
5
6
7
8+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
测试sql
:1
2
3
4
5
6
7
8
9
10SQL> select count(*) from login_log
# 输出
+-------------------------------+
| count |
+-------------------------------+
| 464 |
+-------------------------------+
SQLRowCount returns 1
1 rows fetched
SQL>
如图:
用Python3.10
测试
安装python3
支持模块
python3.10
没法用pip
安装pyodbc
,可以安装pypyodbc
,以下用python3.10
安装pypyodbc
做测试1
pip install pypyodbc
操作语句
1 | import pypyodbc |
结果如图:
参考资料:
1、unixODBC DOWNLOAD地址:
2、JET / MS Access database (MDB) tools
3、DB tools ODBC driver
4、软件包mdbtools搜索结果
5、MDB Tools
6、MDB Tools开源项目地址
7、错误码查询sqlstate_status_return_codes
8、在Linux中通过Python脚本访问mdb数据库的方法
9、Access ODBC Driver
10、ODBC Driver Download: Access