Почему Rusqlite создает только первую таблицу при выполнении моего скрипта инициализации?

Я хочу создать базу данных с помощью rusqlite, в ней должно быть несколько таблиц, поэтому я создал файл create.sql, содержащий код SQL для создания таблиц.

В моем воспроизведенном примере это выглядит так:

create table TestTable1 (
    id integer primary key
);

create table TestTable2 (
    id integer primary key
);

Затем я запускаю его с помощью Rust, вот так:

fn main() {
    let db = rusqlite::Connection::open("test.db").unwrap();

    let command = std::fs::read_to_string("create.sql").unwrap();

    db.execute(&command, []).unwrap();
}

Но когда я открываю файл в браузере БД, он содержит только TestTable1. Я также не вижу его в необработанном двоичном файле базы данных и не могу получить доступ к таблице с помощью rusqlite, поэтому я почти уверен, что она не создается.

Так почему же rusqlite закрывается после создания первой таблицы?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо этого используйте .execute_batch().

Просто .execute() выполняет только один оператор (как описано). Вызов .execute() с несколькими операторами будет игнорировать остальные, если вы не согласитесь использовать флаг функции "extra_check". Дополнительную информацию смотрите в этом выпуске GitHub.

Другие вопросы по теме