找不到表 dbstat

问题描述 投票:0回答:2
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
python windows sqlite
2个回答
1
投票

@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',)]

0
投票

对于Windows,从sqlite3下载页面下载sqlite3 64位,然后将sqlite3.dll粘贴到python dlls文件夹中,然后它解决了dbstat错误

© www.soinside.com 2019 - 2024. All rights reserved.