2017-08-29 24 views
2

私はpyodbcを使用してsqliteのデータベースに接続しようとする非常に単純なPythonスクリプトがあります。pyodbc接続

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:私はこのスクリプトを実行すると

#!/usr/bin/env python 

import sqlite3 
import pyodbc 

con_str = 'DRIVER={SQLITE3};DATABASE=%s' % ('/tmp/test.db') 

db = pyodbc.connect(con_str) 

を私はエラーが表示されます存在するファイルへのリンクです:

$ 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'ドライバを使用していない理由はありますか?これで、単純に '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ドライバをインストールすることでした。

関連する問題