删除 :memory 中的数据库文件:
Deleting a database file in :memory:
背景和问题
我们在测试时使用 :memory:
来存储我们的数据库,并希望在每个测试用例之前删除它 运行 这样我们将从头开始为每个测试用例创建一个空数据库测试用例。 (如果我们将数据库存储在磁盘上,我们只需删除文件)
我们的设置
- 我们正在使用 Python 的
unittest
模块
- (Python 版本: 3.6)
- 这是我们创建数据库的样子:
db_connection = sqlite3.connect(":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
这告诉我们,当您关闭内存中的数据库时,它就被销毁了。
背景和问题
我们在测试时使用 :memory:
来存储我们的数据库,并希望在每个测试用例之前删除它 运行 这样我们将从头开始为每个测试用例创建一个空数据库测试用例。 (如果我们将数据库存储在磁盘上,我们只需删除文件)
我们的设置
- 我们正在使用 Python 的
unittest
模块 - (Python 版本: 3.6)
- 这是我们创建数据库的样子:
db_connection = sqlite3.connect(":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
这告诉我们,当您关闭内存中的数据库时,它就被销毁了。