Есть ли способ проверить наличие и структуру таблиц в базе данных SQLite3? - PullRequest
0 голосов
/ 11 декабря 2018

Я разрабатываю приложение Rust для регистрации пользователей по SSH (например, работающее для SDF).

Я использую базу данных SQLite3 в качестве бэкэнда для хранения информациио пользователях.

Я открываю файл базы данных (или создаю его, если он не существует), но я не знаю подход для проверки наличия в базе данных необходимых таблиц с ожидаемой структурой.

Я пытался использовать PRAGMA schema_version для контроля версий, но этот подход ненадежен.

Я обнаружил, что есть сообщения с ответами, которые тесно связаны с моим вопросом:

1 Ответ

0 голосов
/ 12 декабря 2018

Я открываю файл базы данных (или создаю его, если он не существует), но я не знаю подход для проверки, если необходимые таблицы

Я нашел запрос sqlite_master для проверки таблиц, индексов, триггеров и представлений, а также для столбцов, используя PRAGMA table_info(the_table_name) для проверки столбцов.

например, следующее позволит вам получить ядробазовая информация и возможность ее обработки относительно легко (только для демонстрационных таблиц): -

SELECT name, sql FROM sqlite_master WHERE type = 'table' AND name LIKE 'my%';

с ожидаемой структурой

PRAGMA table_info(mytable);

Первые результаты в (например): -

enter image description here

В то время как вторые результаты (для mytable): -

enter image description here

  • Обратите внимание, что тип является пустым / пустым для всех столбцов, так как SQL для создания таблицы не указывает типы столбцов.

Если вывы используете SQLite 3.16.0 или выше, чем вы могли бы использовать PRAGMA Функции (например, pragma_table_info (table_name)) ratheЧем требуется двухэтапный подход до 3.16.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...