Linux(Ubuntu)下如何通过iODBC用Python连接数据库?
在Ubuntu下通过iODBC使用Python连接HFSQL Classic数据库
方法1:重新编译pyodbc以链接iODBC
pyodbc默认会关联unixODBC,你需要从源码编译并指定iODBC的库路径:
- 卸载已安装的pyodbc(如果存在):
pip uninstall -y pyodbc - 确保安装编译依赖:
sudo apt-get install build-essential python3-dev - 通过pip编译安装pyodbc,指定iODBC的头文件和库路径:
pip install pyodbc --global-option=build_ext --global-option="-I/usr/include/iodbc" --global-option="-L/usr/lib/x86_64-linux-gnu" --global-option="-liodbc" - 验证链接情况:
运行以下命令检查pyodbc是否链接了iODBC库:
输出中应显示ldd $(python -c "import pyodbc; print(pyodbc.__file__)")libiodbc.so,而非libodbc.so。也可在Python中验证连接:import pyodbc conn = pyodbc.connect("DSN=你的HFSQL DSN名称") print(pyodbc.SQLGetInfo(conn, pyodbc.SQL_DRIVER_NAME)) conn.close()
方法2:使用原生支持iODBC的iodbc库
iodbc是专门封装iODBC API的Python库,无需依赖unixODBC:
- 安装
iodbc库:pip install iodbc - 连接示例:
import iodbc # 连接HFSQL数据库 conn = iodbc.connect('DSN=你的HFSQL DSN名称') cursor = conn.cursor() # 执行查询示例 cursor.execute("SELECT * FROM 你的表名") for row in cursor.fetchall(): print(row) # 关闭资源 cursor.close() conn.close()
配置检查
确保iODBC的配置文件正确:
- 检查
/etc/odbcinst.ini,确认HFSQL驱动已正确注册:[HFSQL Classic Driver] Driver=/path/to/your/hfsql/driver.so Setup=/path/to/your/hfsql/setup.so - 检查
/etc/iodbc.ini,确认DSN配置正确:[YourHFSQLDSN] Driver=HFSQL Classic Driver Database=/path/to/your/hfsql/database - 用
iodbctest "DSN=YourHFSQLDSN"再次验证连接正常。
内容的提问来源于stack exchange,提问作者Didier
相关产品推荐
相关产品推荐

