python - 如何在 sqlalchemy 中使用 psycopg2.extras?

标签 python python-3.x sqlalchemy psycopg2

我想将大量条目(~600k)上传到 PostgreSQL 数据库中的一个简单表中,每个条目有一个外键、一个时间戳和 3 个 float 。但是,每个条目需要 60 毫秒来执行描述的核心批量插入 here ,因此整个执行需要 10 小时。我发现这是 executemany() 方法的性能问题,但是它已通过 psycopg2 2.7 中的 execute_values() 方法解决。 .

我运行的代码如下:

#build a huge list of dicts, one dict for each entry
engine.execute(SimpleTable.__table__.insert(),
               values) # around 600k dicts in a list

我看到这是一个常见问题,但是我还没有设法在 sqlalchemy 本身中找到解决方案。有没有办法告诉sqlalchemy在某些场合调用execute_values()?有没有其他方法可以不用自己构造SQL语句实现大插入?

感谢您的帮助!

最佳答案

与此同时,通过 create_engine() 函数上的 use_batch_mode 标志,这成为可能(从 SqlAlchemy 1.2.0 开始)。查看docs .它使用 psycopg.extras 中的 execute_batch() 函数。

关于python - 如何在 sqlalchemy 中使用 psycopg2.extras?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43317376/

相关文章:

python - 判断Django是否在开发服务器下运行

Python:如何在单独的进程中调用方法

python - 如何返回对函数的递归调用?

python - 如何将海关类型数组传递给 PostgreSQL 函数

python - 使用 Python 的 fixture 模块生成 fixture 数据

python - wx.NotificationMessage 属性错误: 'module' object has no attribute 'NotificationMessage'

python - 奇怪的异常行为

python - 如何获取 python 命令行参数(如果它只是一个字符串)

python - 为什么它给我错误 : No module named 'urllib.request.urlretrieve' ; 'urllib.request' is not a package

python - [SqlAlchemy][mssql][tls1.2] 如何使用 Windows 中的 pyodbc 为连接到 MS SQL Server 的 SqlAlchemy 强制实现 TLS 1.2?