【发布时间】:2017-08-29 08:19:46
【问题描述】:
我有一个非常简单的 python 脚本,我尝试使用 pyodbc 连接到 sqlite 数据库:
#!/usr/bin/env python
import sqlite3
import pyodbc
con_str = 'DRIVER={SQLITE3};DATABASE=%s' % ('/tmp/test.db')
db = pyodbc.connect(con_str)
当我执行这个脚本时,我收到错误:
Traceback (most recent call last):
File "./test.py", line 8, in <module>
db = pyodbc.connect(con_str)
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/lib64/libsqlite3odbc.so' : file not found (0) (SQLDriverConnect)")
/usr/lib64/libsqlite3odbc.so是一个文件链接,存在:
$ ll /usr/lib64/libsqlite3odbc*
-rwxr-xr-x 1 root root 148232 Sep 29 2012 /usr/lib64/libsqlite3odbc-0.81.so
lrwxrwxrwx 1 root root 22 Aug 29 07:52 /usr/lib64/libsqlite3odbc.so -> libsqlite3odbc-0.81.so
这里有一些 odbc 文件:
$ cat /etc/odbc.ini
[SQLite3 Datasource]
Driver = SQLITE3
$ cat /etc/odbcinst.ini
[SQLITE3]
Description = SQLite ODBC 3.X
Driver = /usr/lib64/libsqlite3odbc.so
Setup = /usr/lib64/libsqlite3odbc.so
Threading = 2
FileUsage = 1
UsageCount = 1
已安装版本 (rpm):pyodbc-3.0.7-1.x86_64、sqliteodbc-0.81-1.2.x86_64。
我应该怎么做才能消除这个错误?
【问题讨论】:
-
您是否有理由不使用本机
sqlite3驱动程序?有了这个,你可以简单地import sqlite3然后conn = sqlite3.connect('/path/to/db.sqlite3')。 -
ldd /usr/lib64/libsqlite3odbc.so是否能够找到所有需要的依赖项? -
@FlipperPA 我们的应用程序在不同的服务器上使用不同的数据库(Oracle、Sybase、SQlite,...)。我们想使用相同的模块(pyodbc)创建连接。
标签: python sqlite pyodbc sqlite-odbc