Временная база данных в памяти SQLite

Возможно ли каким-то образом создать базу данных в памяти в SQLite, а затем уничтожить ее только каким-то запросом?

Мне нужно сделать это для модульного тестирования моего уровня db. До сих пор я работал только при создании нормального файла SQLite db и удалял, если после всех тестов, но все это в памяти было бы намного лучше.

Итак, можно ли инстанцировать базу данных только в памяти, не записывая ничего на диск? Я не могу использовать только транзакции, потому что хочу создать целую новую базу данных.

Ответ 1

Создайте его с именем файла ": memory:": Базы данных с памятью.

Он перестанет существовать, как только соединение с ним будет закрыто.

Ответ 2

В качестве альтернативы базам данных памяти вы можете создать временную базу данных SQLite, используя пустую строку для имени файла. Он будет удален, когда соединение будет закрыто. Преимущество над базой данных в базе данных заключается в том, что ваши базы данных не ограничены доступной памятью.

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

Ответ 3

Я бы предложил установить файловую систему tmpfs где-нибудь (только для файловой системы с ОЗУ) и использовать ее для ваших модульных тестов.

Создайте файлы DB как нормальные, затем сдуйте их, используя rm, но ничего не осталось на диске.

(EDIT: Nice - кто-то избил меня до правильного ответа;) Оставляя это здесь как еще один вариант, независимо от того)