pyodbc到远程sqlite数据库不工作,但没有错误抛出

问题描述:

我有一个树莓派运行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

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