将.db文件读入Python

5
我阅读了sqlite3模块的基础知识(https://docs.python.org/2/library/sqlite3.html),它允许您连接到数据库中的.db文件,然后您可以执行常规的SQL命令,但我想知道是否可能将.db文件读入列表,数组甚至字典中。本质上,我试图做的与unicodecsv或csv模块相同,但是针对.db文件。
如果你想知道我为什么要尝试这样做:我将对数据进行转换,使用数组一列列地计算会更容易。如果需要任何澄清,请告诉我。

不使用库读取SQLite3数据库是不可行的。编写一些SELECT * FROM table查询非常容易实现。 - Colonel Thirty Two
这个回答解决了你的问题吗?如何打开并将SQLite数据库转换为Pandas数据框 - PV8
2个回答

3
您需要迭代所有表格并将其转换为列表。以下是未经测试的代码,但应该能帮助您了解需完成的操作:
import sqlite3

def importdb(db):
     conn = sqlite3.connect(db)
     c = conn.cursor()
     c.execute("SELECT name FROM sqlite_master WHERE type='table';")
     for table in c.fetchall()
         yield list(c.execute('SELECT * from ?;', (table[0],)))

即使在带有 for 的行末加上 :,我仍然会收到错误信息 OperationalError: near "?": syntax error - Joe

1

Breakbotz,我有点困惑你所说的“将db文件读取为列表的列表(不使用SQL命令)”。我相信该文件是一个二进制文件,其中包含有关格式的详细信息 here。因此,如果您真的想要,您可以创建一个解析器来读取它,但这可能会被强烈反对。

如果您读取sqlite3文件的全部内容,然后将所有信息加载到列表的列表中,即使您拥有足够的内存,这也不是最佳用法,特别是如果数据很大。

其次,一旦您从sqlite3模块获得了游标,您可以使用选择参数以分段的方式填充列表,过滤您可以一次处理的列,这可能比尝试解析sqlite3文件更值得一试。

如果我误解了您尝试做的事情,至少是其范围,我很抱歉,但我认为链接可能会帮助您解析数据。我自己没有尝试过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接