首页 > 解决方案 > Python/Sqlite3 - 从 for 循环列表中的项目中选择语句

问题描述

我有 2 个带有 2 个不同表的 sqlite3 数据库,我将数据库 1 中的表称为 DB-A,将数据库 2 中的表称为 DB-B。

DB-A 存储带有字段的行:用户名、记录日期、选择

DB-B 存储具有 20 个字段的行,其中 Date Recorded、Selection 具有等效字段(格式略有不同)。

格式差异示例: DB-A:Date Record 格式为 DD-MM-YYYY DB-B:Date Record 格式为 YYYY-MM-DD

格式差异示例:DB-A:Selection 包括空格和连字符,DB-B:Selection 全部小写,没有空格或连字符。

我目前正在执行 SELECT * from DB-A where Username = ? (用户定义的用户名)和 .fetchall() 到一个列表:userList。

然后我有一个带有以下伪代码的for循环

for item in userList:
    reformat item['Date Record']
    reformat item['Selection']
    SELECT * from DB-B:Table WHERE DB-B:Date Record = item['Date Record'] AND DB-B:Selection like item['Selection]

     execute logic here based on select.fetchall()

现在代码可以工作了,但是这需要很长时间(有时需要 9 小时以上),因为我的 userList 最多可以有 14405 行,而 DB-B 有 300 万多行。

谁能建议一种更好的方法来解决此类问题以显着降低执行时间?

感谢任何帮助,已开发。

标签: pythonsqldatabaselistsqlite

解决方案


推荐阅读