2017-01-10 4 views
0

私は、メディア最適化バージョンのDebianのOSMCを実行しているRaspberry Piを持っています。このPiには、Windows 7 PCからPythonを使用してアクセスしたいSQLiteデータベースがあります。両方のコンピュータは同じホームネットワーク上にあります。リモートsqliteデータベースへのpyodbcは動作しませんが、エラーはスローされません

このsimilar postで推奨されているように、私はSQLITE ODBC driverを取得しました。

次のコードを書いてデータベースを照会しました。コードは例外をスローしていませんが、データを返すこともありません。私が間違っていることは何ですか?

import pyodbc 

def connectToDB(): 
    serverIP = '192.168.0.110' #raspberry pi on home network 
    databaseName = 'pigarage.db' 
    sql = 'DRIVER={SQLite3 ODBC Driver};SERVER=%s;DATABASE=%s;Trusted_connection=yes' % (serverIP, databaseName) 
    conn = pyodbc.connect(sql) 
    return conn 

def runQuery(conn, sql): 
    cursor = conn.cursor() 
    cursor.execute(sql) 
    result = list(cursor.fetchall()) # list of tuples 
    cursor.close() 
    return result 

if __name__ == '__main__': 
    conn = connectToDB() 
    print conn 
    sql = 'select distinct state from GarageDoorState' 
    print runQuery(conn, sql) 
    conn.close() 
    print 'completed successfully' 

OUTPUT:

<pyodbc.Connection object at 0x035434E8> 
[] 
completed successfully 

私は(?それはサーバーDBではないとわからないSQLiteのは、これを必要とする)ODBC接続はポートのいずれかの種類を必要としませんでした気づいた、またはユーザー/ PWD私はちょうどプロセスについて混乱していると思うし、私のセットアップは間違っていると思う。しかし、私はなぜコードからエラーが出ないのか困惑していますか?

ODBC setup

答えて

2

SQLiteデータベースはファイルであり、ファイルとしてアクセスされます。

ドライバにデータベース名pigarage.dbを与えると、その名前のファイルが開きます(または作成されます)。

別のマシンのデータベースにアクセスするには、ネットワークファイルシステム(Sambaを参照)を使用して、それがcorrectly configuredであることを確認する必要があります(ディレクトリ名を使用しない場合は、現在のディレクトリが使用されます)。

+0

ありがとうございました。私は自分のRaspberry Piにsambaサーバーをインストールし、それにアクセスするために次の接続文字列を使いました: 'sql =" DRIVER = SQLite3 ODBC Driver; Database = r '\\ 192.168.0.114 \ pi \ pigarage.db; "' – Roberto

関連する問題