2017-01-10 48 views
0

我有一個樹莓派運行OSMC,一個媒體優化版本的Debian。這個Pi擁有一個SQLITE數據庫,我想從我的Windows 7 PC使用Python訪問。兩臺電腦都在同一家庭網絡上。pyodbc到遠程sqlite數據庫不工作,但沒有錯誤拋出

按照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 

我注意到ODBC連接不需要任何類口岸(?不知道SQLite的需要這一點,因爲它不是一個服務器DB),或用戶名/密碼等等。我想我只是對這個過程感到困惑,而且我的設置是錯誤的。但是,我很困惑爲什麼沒有代碼錯誤?

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

相關問題