相关疑难解决方法(0)

如何在sqlalchemy中使用psycopg2.extras?

我想将大量条目(〜600k)上传到PostgreSQL DB的一个简单表中,每个条目有一个外键,一个时间戳和3个浮点数。但是,每个条目要花费60毫秒才能执行此处所述的核心批量插入操作,因此整个执行过程将花费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
Run Code Online (Sandbox Code Playgroud)

我看到这是一个普遍的问题,但是我还没有设法在sqlalchemy本身中找到解决方案。有什么方法可以告诉sqlalchemy execute_values()在某些情况下调用吗?还有其他方法可以实现巨大的插入而无需自己构造SQL语句吗?

谢谢您的帮助!

python sqlalchemy psycopg2 python-3.x

3
推荐指数
2
解决办法
1190
查看次数

SQLAlchemy Core批量插入速度慢

我正在尝试截断一个表并使用SQLAlchemy仅插入约3000行数据,这非常慢(约10分钟)。

我遵循了此文档上的建议,并利用了sqlalchemy核心来进行插入,但是运行速度仍然非常慢。我有哪些可能的罪魁祸首?数据库是一个postgres RDS实例。谢谢!

engine = sa.create_engine(db_string, **kwargs, pool_recycle=3600)
with engine.begin() as conn:
            conn.execute("TRUNCATE my_table")
            conn.execute(
                MyTable.__table__.insert(),
                data #where data is a list of dicts
            )
Run Code Online (Sandbox Code Playgroud)

python postgresql orm sqlalchemy

2
推荐指数
1
解决办法
2157
查看次数

标签 统计

python ×2

sqlalchemy ×2

orm ×1

postgresql ×1

psycopg2 ×1

python-3.x ×1