Не могу найти таблицу dbstat - PullRequest
0 голосов
/ 16 мая 2019
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 голосов
/ 16 мая 2019

@ Шон ... ладно, разобрался, что происходит. Python на Windows отличается от sqlite3.dll от Python на Linux. У одного на Windows не было SQLITE_ENABLE_DBSTAT_VTAB. Чтобы заставить его работать, вы можете скомпилировать sqlite3.dll самостоятельно из исходного кода, как сказал @Shawn, или вы можете скачать скомпилированную dll с их веб-сайта, где у нее включена опция, и добавить ее в папку DLLs в директор питона.

Проверить скомпилированные параметры sqlite3 можно по телефону

PRAGMA compile_options;

Если вы хотите проверить питон sqlite3.dll, запустите этот скрипт на питоне

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',)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...