在Python中验证SQLite数据库格式,若数据库为字符串/StringIO对象格式

0 投票
1 回答
620 浏览
提问于 2025-04-17 14:36

如果有一个SQLite数据库,它是以字符串或者StringIO对象的形式存在的,是否有一个Python模块可以快速简单地验证这个数据库的格式?大多数模块似乎都需要你传入一个文件的引用来打开数据库,而我现在的情况是没有文件存在,所以我想直接通过内容来验证数据库的格式。谢谢。

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:

撰写回答