到SQLite数据库

问题描述:

pyodbc方面,我有很简单的Python脚本中,我尝试使用pyodbc连接到SQLite数据库:到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_64sqliteodbc-0.81-1.2.x86_64

我该怎么做才能消除这个错误?

+1

有没有原因你没有使用本地'sqlite3'驱动程序?用这个,你可以简单地'import sqlite3'然后'conn = sqlite3.connect('/ path/to/db.sqlite3')''。 – FlipperPA

+0

'ldd/usr/lib64/libsqlite3odbc.so'能否找到所需的所有依赖关系? –

+1

@FlipperPA我们的应用程序在不同的服务器上,可与不同的数据库(Oracle,Sybase,SQlite等)协同工作。我们希望使用相同的模块(pyodbc)创建连接。 – Yama

解决方案是安装0.9995版本的SQLite ODBC驱动程序。