我们在测试时使用:memory:
存储我们的数据库,并希望在每个测试用例运行之前删除它,以便我们从头开始为每个测试用例提供一个空数据库。 (如果我们将数据库存储在磁盘上,我们只需删除文件)
unittest
模块db_connection = sqlite3.connect(":memory:")
我们如何从内存中删除我们的数据库?
答案 0 :(得分:4)
使用连接方法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:没有这样的表:test
这告诉我们当你在内存中关闭数据库时,它会被销毁。