From: Jason Kirtland Date: Mon, 23 Jul 2007 05:57:05 +0000 (+0000) Subject: Finished up the workflow in ormsession test X-Git-Tag: rel_0_4_6~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=586e8b2374488dd4982f938b9628a8632ed295ee;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Finished up the workflow in ormsession test --- diff --git a/test/perf/ormsession.py b/test/perf/ormsession.py index e41ec0629c..d0f4e6ecbf 100644 --- a/test/perf/ormsession.py +++ b/test/perf/ormsession.py @@ -166,17 +166,40 @@ def run_queries(): report.append(item.name) report.extend([s.name for s in item.subitems]) + # mix a little low-level with orm # pull a report of the top 20 items of all time _item_id = purchaseitems.c.item_id top_20_q = select([func.distinct(_item_id).label('id')], group_by=[purchaseitems.c.purchase_id, _item_id], order_by=[desc(func.count(_item_id)), _item_id], limit=20) - q2 = session.query(Item).filter(Item.id.in_(top_20_q)) + ids = [r.id for r in top_20_q.execute().fetchall()] + q2 = session.query(Item).filter(Item.id.in_(*ids)) for num, item in enumerate(q2): report.append("number %s: %s" % (num + 1, item.name)) +@profiled('creating') +def create_purchase(): + # commit a purchase + customer_id = 100 + item_ids = (10,22,34,46,58) + + session = create_session() + session.begin() + + customer = session.query(Customer).get(customer_id) + items = session.query(Item).filter(Item.id.in_(*item_ids)) + + purchase = Purchase() + purchase.customer = customer + purchase.items.extend(items) + + session.flush() + session.commit() + session.expire(customer) + + def setup_db(): metadata.drop_all() metadata.create_all() @@ -191,6 +214,7 @@ def main(): setup_db() insert_data() run_queries() + create_purchase() cleanup_db() main()