找不到表dbstat

时间:2019-05-16 12:11:26

标签: python windows sqlite

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

1 个答案:

答案 0 :(得分:0)

@Shawn ...好的,知道发生了什么。 Windows上的Python与sqlite3.dll上的Python具有不同的LinuxWindows上的一个没有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',)]