0

如果有一个 String 或 StringIO 对象形式的 SQLite 数据库,是否有一个 Python 模块可以提供一种快速直接的方法来验证数据库的格式?大多数模块似乎都需要您传递对文件的引用来打开数据库,而在我正在处理的场景中,不存在文件,所以我想直接通过其内容来验证数据库的格式。谢谢你。

4

1 回答 1

3

数据库本身提供了sqlite一个内存选项。用作文件:memory:名来创建它。

>>> import sqlite3
>>> conn = sqlite3.connect(':memory:')
>>> conn.execute('CREATE TABLE foo (bar)')
<sqlite3.Cursor object at 0x10c8f76c0>
>>> list(conn.execute('SELECT * FROM foo'))
[]
>>> list(conn.execute('SELECT name FROM sqlite_master'))
[(u'foo',)]
>>> conn = sqlite3.connect(':memory:')  # a reconnect gives a new empty database
>>> list(conn.execute('SELECT name FROM sqlite_master'))
[]

没有为连接创建文件,关闭 python 将关闭内存数据库和模式,其中的所有数据都被丢弃。

您唯一的其他选择是使用临时文件名;sqlite坚持完整地处理文件本身。您不能传入类似文件的对象,它必须是文件名或字符串:memory:

于 2013-02-03T14:09:27.827 回答