从缓冲区创建内存中的db文件

时间:2016-05-26 08:41:15

标签: python memory sqlite

python中有没有办法在字符串中创建内存中的sqlite数据库文件? 我已经尝试过使用sqlite3和tempfile,但没有提供帮助

的东西

2 个答案:

答案 0 :(得分:0)

我找到了一个创建内存sqlite数据库here的例子:

import sqlite3
con = sqlite3.connect(':memory:')

有关使用:memory:的不同方法的一些信息可以找到here,而Python特定文档是here

你提到的字符串究竟是什么?如果它是SQLite命令的缓冲区,则可以使用con.execute(buffer)。如果没有,您将需要获取光标,创建表,然后手动插入数据。以下是Python API文档中的示例:

c = con.cursor()

# Create table
c.execute('''CREATE TABLE stocks
             (date text, trans text, symbol text, qty real, price real)''')

# Insert a row of data
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

# Save (commit) the changes
con.commit()

# We can also close the connection if we are done with it.
# Just be sure any changes have been committed or they will be lost.
con.close()

如果要将内存数据库写入文件,可以使用SQLite's Online Backup API(Python包装器here)。但是,如果您希望立即访问数据库作为文件,但仍希望它在内存中,我认为您需要使用RAM disk(我不确定这是否是您要求的,但我包括它只是以防万一)。

希望这有帮助。

答案 1 :(得分:0)

首先需要在数据库中创建table1

import sqlite3
con = sqlite3.connect("memory.db")
cur = con.cursor()
cur.execute("CREATE TABLE table1 (A TEXT, B REAL, C TEXT);")

然后将您的字符串插入数据库中的table1,假设该行是字符串并且有三个条目由“;”分隔

cur.executemany('INSERT INTO table1 VALUES (?,?,?)',(line,))

#to finish
con.commit()
con.close()