2017-08-29 126 views
2

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

回答

1

解決方案是安裝0.9995版本的SQLite ODBC驅動程序。