pyodbc 到远程 sqlite 数据库不工作但没有抛出错误
pyodbc to remote sqlite database not working but no errors thrown
我有一个 Raspberry Pi 运行 OSMC,一个 Debian 的媒体优化版本。该 Pi 包含一个 SQLITE 数据库,我想使用 Python 从我的 Windows 7 PC 访问该数据库。两台计算机都在同一个家庭网络上。
据此, I obtained an 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 是否需要这个,因为它不是服务器数据库?),或用户/密码等。我想我只是对过程,而且我的设置是错误的。但是后来我很困惑为什么代码没有错误?
SQLite 数据库是一个文件,并作为文件访问。
当您将数据库名称 pigarage.db
提供给驱动程序时,它将打开(或创建)具有该名称的文件。 (没有目录名,它将使用恰好是当前目录的任何内容。)
要访问另一台机器上的数据库,您需要使用网络文件系统(参见Samba), and ensure that it is correctly configured。
我有一个 Raspberry Pi 运行 OSMC,一个 Debian 的媒体优化版本。该 Pi 包含一个 SQLITE 数据库,我想使用 Python 从我的 Windows 7 PC 访问该数据库。两台计算机都在同一个家庭网络上。
据此
我写了下面的代码来查询数据库。该代码没有抛出任何异常,但也没有返回任何数据。我做错了什么?
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 是否需要这个,因为它不是服务器数据库?),或用户/密码等。我想我只是对过程,而且我的设置是错误的。但是后来我很困惑为什么代码没有错误?
SQLite 数据库是一个文件,并作为文件访问。
当您将数据库名称 pigarage.db
提供给驱动程序时,它将打开(或创建)具有该名称的文件。 (没有目录名,它将使用恰好是当前目录的任何内容。)
要访问另一台机器上的数据库,您需要使用网络文件系统(参见Samba), and ensure that it is correctly configured。