c.execute('select sum(unused), sum(pgsize), sum(payload), count(*) from dbstat')
或
c.execute('select sum(unused), sum(pgsize), sum(payload), count(*) from main.dbstat')
我正在使用sqlite3
数据库,并且试图从dbstat
表中获取数据库的统计信息。该行在Linux
上不能在Window
上正常工作。在这两种情况下,我都确保使用相同的sqlite3
版本和相同的python3
版本。我很想知道为什么这在Windows上不起作用。
错误:
c.execute('select sum(unused), sum(pgsize), sum(payload), count(*) from dbstat') sqlite3.OperationalError: no such table: dbstat
答案 0 :(得分:0)
@Shawn ...好的,知道发生了什么。 Windows
上的Python与sqlite3.dll
上的Python具有不同的Linux
。 Windows
上的一个没有SQLITE_ENABLE_DBSTAT_VTAB
。要使其工作,您可以从@Shawn说的源代码中自己编译sqlite3.dll,也可以从其启用了选项的网站上下载编译的dll,并将其添加到DLLs
文件夹中在python导演中。
您可以通过调用来检查sqlite3编译选项
PRAGMA compile_options;
如果要检查python sqlite3.dll
,请运行此python脚本
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute('PRAGMA compile_options;')
available_pragmas = c.fetchall()
print(available_pragmas)
conn.close()
Python3.7输出如下所示
[('COMPILER=msvc-1916',), ('ENABLE_FTS4',), ('ENABLE_FTS5',), ('THREADSAFE=1',)]