| 62 | |
| 63 | |
| 64 | def runit_persist(status, factor=1, query_runs=5): |
| 65 | num_bosses = 100 * factor |
| 66 | num_grunts = num_bosses * 100 |
| 67 | |
| 68 | bosses = [ |
| 69 | Boss(name="Boss %d" % i, golf_average=Decimal(random.randint(40, 150))) |
| 70 | for i in range(num_bosses) |
| 71 | ] |
| 72 | |
| 73 | sess.add_all(bosses) |
| 74 | status("Added %d boss objects" % num_bosses) |
| 75 | |
| 76 | grunts = [ |
| 77 | Grunt( |
| 78 | name="Grunt %d" % i, |
| 79 | savings=Decimal(random.randint(5000000, 15000000) / 100), |
| 80 | ) |
| 81 | for i in range(num_grunts) |
| 82 | ] |
| 83 | status("Added %d grunt objects" % num_grunts) |
| 84 | |
| 85 | while grunts: |
| 86 | # this doesn't associate grunts with bosses evenly, |
| 87 | # just associates lots of them with a relatively small |
| 88 | # handful of bosses |
| 89 | batch_size = 100 |
| 90 | batch_num = (num_grunts - len(grunts)) / batch_size |
| 91 | boss = sess.query(Boss).filter_by(name="Boss %d" % batch_num).first() |
| 92 | for grunt in grunts[0:batch_size]: |
| 93 | grunt.employer = boss |
| 94 | |
| 95 | grunts = grunts[batch_size:] |
| 96 | |
| 97 | sess.commit() |
| 98 | status("Associated grunts w/ bosses and committed") |
| 99 | |
| 100 | |
| 101 | def runit_query_runs(status, factor=1, query_runs=5): |