找不到表dbs

2024-10-03 09:10:24 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: from版本信息数据库executeunusedmainlinux
1条回答
网友
1楼 · 发布于 2024-10-03 09:10:24

@肖恩。。。好吧,弄清楚发生了什么。Windows上的Python与Linux上的Python具有不同的sqlite3.dllWindows上的那个没有SQLITE_ENABLE_DBSTAT_VTAB。要使其正常工作,您可以自己从@Shawn said这样的源代码编译sqlite3.dll,也可以从他们的网站下载编译后的dll,在那里它启用了选项,并将其添加到python director的DLLs文件夹中。你知道吗

您可以通过调用

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

相关问题 更多 >