import random import string import sys import uuid import sqlalchemy as sa TOTAL = 10000000 BATCH_SIZE = 10000 meta = sa.MetaData() users = sa.Table( 'users', meta, sa.Column('user_id', sa.Integer, primary_key=True, nullable=False), sa.Column('external_id', sa.String(32), unique=True, nullable=False), sa.Column('name', sa.String(32), unique=True, nullable=False), sa.Column('metadata', sa.Text), sa.Column('date_created', sa.DateTime, server_default=sa.text('now()'), nullable=False, index=True), mysql_engine='innodb', ) eng = sa.create_engine('mysql+pymysql://root:devel@127.0.0.1:3306/devel') meta.create_all(bind=eng, checkfirst=True) n_rows = eng.execute(sa.select([sa.func.count(users.c.user_id)])).scalar() if not n_rows: count = 0 with eng.begin(): for _ in range(TOTAL // BATCH_SIZE): data = [ {'external_id': str(uuid.uuid4()).replace('-', ''), 'name': ''.join(random.choice(string.ascii_letters) for _ in range(12)), 'metadata': 'something'} for _ in range(BATCH_SIZE) ] eng.execute(users.insert().values(data)) count += BATCH_SIZE print('Inserted %d rows...' % count) print('Total rows: %d' % eng.execute(sa.select([sa.func.count(users.c.user_id)])).scalar())