在Python中验证SQLite数据库格式,若数据库为字符串/StringIO对象格式
如果有一个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:
。