python - 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 万多行。
谁能建议一种更好的方法来解决此类问题以显着降低执行时间?
感谢任何帮助,已开发。
解决方案
推荐阅读
- python - 为什么 vpython 在某些情况下无法显示多个球体?
- javascript - 反应全局变量未在传递给子组件的函数内部更新
- java - R8:IR 转换期间出现 NullPointerException
- java - java中的基本for循环和数据存储
- php - 找不到 Ratchet 的 vendor/autoload.php
- azure - Azure Functions - 注入的 ILogger
日志没有出现 - javascript - 使用jQuery动画覆盖body标签的背景颜色
- android - 如何在 Android 主屏幕上显示自定义对话框?科特林
- php - 我对 MySQL 中的“UPDATE”命令有疑问
- python - 返回一个由函数调用的 2 个参数组合的新元组