删除数据库文件:memory:

时间:2018-02-11 14:16:27

标签: python python-3.x sqlite python-unittest

背景和问题

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

我们的设置

  • 我们正在使用Python的unittest模块
  • (Python版本:3.6)
  • 这就是我们的数据库创建:db_connection = sqlite3.connect(":memory:")

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

1 个答案:

答案 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

这告诉我们当你在内存中关闭数据库时,它会被销毁。