【问题标题】:pyodbc to remote sqlite database not working but no errors thrownpyodbc 到远程 sqlite 数据库不工作,但没有抛出错误
【发布时间】:2017-01-10 02:20:52
【问题描述】:

我有一个运行 OSMC 的 Raspberry Pi,这是 Debian 的媒体优化版本。这个 Pi 拥有一个 SQLITE 数据库,我想在我的 Windows 7 PC 上使用 Python 访问它。两台电脑都在同一个家庭网络上。

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

输出:

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

我注意到 ODBC 连接不需要任何类型的端口(不确定 SQLite 是否需要这个,因为它不是服务器数据库?)或用户/密码等。我想我只是对这个过程感到困惑,而且我的设置是错误的。但是我很困惑为什么代码没有错误?

【问题讨论】:

    标签: python sqlite raspberry-pi odbc debian-based


    【解决方案1】:

    SQLite 数据库是一个文件,并且作为文件访问。

    当您将数据库名称pigarage.db 提供给驱动程序时,它将打开(或创建)一个具有该名称的文件。 (如果没有目录名,它将使用当前目录。)

    要访问另一台机器上的数据库,您需要使用网络文件系统(参见Samba),并确保它是correctly configured

    【讨论】:

    • 谢谢,成功了。我在 Raspberry Pi 上安装了一个 samba 服务器,然后使用以下连接字符串访问它:sql = "DRIVER=SQLite3 ODBC Driver;Database=r'\\192.168.0.114\pi\pigarage.db;"
    猜你喜欢
    • 2018-08-20
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 2022-08-06
    相关资源
    最近更新 更多