在sqlite3数据库中查找数据库的所有行

2024-09-27 23:24:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望我没有朝着错误的方向前进,但以下是我要做的

我有一个超过1000万行(和2列)的文件,我只需要大约15000行。对于这15000行,我需要得到第2列中的值。我将此文件制作成一个SQLite数据库并为其编制索引。平面文件的示例:

id   primer
1   TDXY45
2   TDYZ56
3   TXYY75

我还有一个15000行的文件。我将它作为pandas数据帧导入(我们称之为df),并对它做了一些工作,所以现在它有两列,idnum

我需要在sqlite数据库中找到所有这些id,并在df中附加第三列primer。所需输出(其中缺少id 2,因为它不在df):

id   num   primer
1    24   TDXY45
3    51   TXYY75

这可能吗?我是不是完全走错了路?
我花了很多时间研究如何最好地处理搜索700MB文件中的1000万行以提取15000个文件子集的数据。我不懂信息论;我不确定如何平衡内存使用与I/O处理等。我首先考虑使用pandas和chunksize选项导入大文件,但经过一些研究(包括this post),决定尝试使用sqlite解决方案。请随意提出完全不同的解决方案,可能更适合我的需要。我对这类任务缺乏经验,我真的很想更好地理解它。我感谢你的帮助

编辑:从昨晚起我想到了什么

ids = df['id'].tolist()
select = f"SELECT id, primer FROM g WHERE seq IN ({','.join('?' * len(ids))})"
rows = c.execute(select, ids).fetchall()

在此之后,我只需要将行*附加到我的df中,由id匹配。我可以做到这一点。但这似乎不是解决这个问题的最好办法


Tags: 文件数据id数据库idspandasdfsqlite

热门问题