我在外部 SSD 上有一个 15 GB sqlite 数据库。它有 3200 个表,每个表包含 100k 行。
我需要从 CSV 文件将 20 个以上的表加载到此数据库中,每个表又加载 10 万行。有一些字符串和数字列。任何现有或要添加的表中都没有索引或键。
我正在使用带有 pd.read_csv 和 df.to_sql 的 python 脚本来加载数据。
在 macOS 上每个表需要 60 秒,在 Windows 上每个表需要 1 秒。 在这两种情况下,我在同一个 SSD 上使用相同的数据库文件和相同的脚本。
我无法理解为什么在 mac 上要花这么长时间。 当我尝试将数据加载到新的 sqlite 数据库而不是现有的 SQLite 数据库中时,每个表与预期一样需要 1 秒。但为什么同一个数据库文件在两个系统上给出如此截然不同的插入时间却超出了我的理解。
我尝试通过使用新数据库而不是现有数据库(两个系统上每个表 1 秒)、重命名数据库(差异没有变化)、移动数据库位置(没有变化)、从 SSD 复制数据库来隔离问题到磁盘(没有变化)并使用 sqlalchemy 后端而不是 sqlite(同样,没有变化)。
我完全不知道为什么会发生这种情况以及如何进一步诊断这个问题。
有多种解决方案可供筛选,以下是一些基本的解决方案。如果这些不起作用,我们可以重新审视。
选择正确的语言服务器:
VS Code for Python 支持不同的语言服务器,例如 Pylance、Microsoft Python 语言服务器或 Jedi。其中每一个都会影响自动完成的工作方式。例如,Pylance 以其强大的 IntelliSense 功能而闻名。您可以通过转到“首选项:在 VS Code 中打开设置 (JSON)”并将“python.languageServer”设置为“Pylance”、“Microsoft”或“Jedi”来更改语言服务器。 安装并使用 Pylance 扩展:
如果尚未完成,请从 VS Code 市场安装 Pylance 扩展。 Pylance 提供改进的 IntelliSense 功能,包括更好的自动完成功能。
检查您的 Python 扩展和 VS Code 版本:
确保您使用的是最新版本的 VS Code Python 扩展,并且您的 VS Code 是最新的。更新通常包括 IntelliSense 的改进和错误修复。 配置 IntelliSense 设置:
调整 VS Code 中的 IntelliSense 设置。转到首选项 -> 设置并搜索 IntelliSense。检查与 Python 和自动完成相关的设置,以确保它们配置最佳。