記事の概要
- 以下記事のinsertの高速化の実験
結論
- sqlalchemy.core速い。最も遅いやり方の55倍くらい
実験
実験結果
手法 | 所要時間(sec) |
---|---|
1.最も遅いやり方 | 1.486 |
2.ORMでまとめてInsert | 0.369 |
3.sqlalchemy.coreでまとめてInsert | 0.027 |
対象DBのモデル
# models.py抜粋
class Item(Base):
__tablename__ = 'items'
id = Column(Integer, primary_key=True)
name = Column(String(255), nullable=False)
age = Column(Integer(), nullable=False)
1.最も遅いやり方
for i in range(0, 1000):
item = Item()
item.name = 'tarou'
item.age = randint(1, 100000)
session.add(item)
session.commit()
2.ORMでまとめてInsert
items = list()
for i in range(0, 1000):
item = Item()
item.name = 'tarou'
item.age = randint(1, 100000)
items.append(item)
session.add_all(items)
session.commit()
3.sqlalchemy.coreでまとめてInsert
items = list()
for i in range(0, 1000):
item = dict()
item['name'] = 'bean'
item['age'] = randint(1, 100000)
items.append(item)
session.execute(Item.__table__.insert(), items)
session.commit()