删除 :memory 中的数据库文件:

Deleting a database file in :memory:

背景和问题

我们在测试时使用 :memory: 来存储我们的数据库,并希望在每个测试用例之前删除它 运行 这样我们将从头开始为每个测试用例创建一个空数据库测试用例。 (如果我们将数据库存储在磁盘上,我们只需删除文件)

我们的设置


我们如何从内存中删除我们的数据库?

使用连接方式close()。它将关闭您与数据库的连接。如果数据库在内存中,您应该无法重新连接到它。

你可以简单地测试一下:

import sqlite3
conn = sqlite3.connect(':memory:')

c = conn.cursor()
c.execute('CREATE TABLE test (col1 text, col2 text)')
c.execute("INSERT INTO test VALUES ('good', 'day')")
conn.commit()
conn.close()

之后我们可以检查是否可以访问数据库。

conn = sqlite3.connect(':memory:')
c = conn.cursor()
c.execute("SELECT * FROM test")
print(c.fetchall())

c.execute("SELECT * FROM test")

sqlite3.OperationalError: no such table: test

这告诉我们,当您关闭内存中的数据库时,它就被销毁了。