Browse Source

Merge pull request #1544 from TechEmpower/fix-updates

Python+PHP: Ensure updates are committed to database
Hamilton Turner 10 years ago
parent
commit
8a41b9b380

+ 2 - 6
frameworks/PHP/limonade/index.php

@@ -54,10 +54,6 @@ function queries() {
 
 
 }
 }
 
 
-function update_world(&$world, $key) {
-	$world["randomnumber"] = mt_rand(1, 10000);
-}
-
 dispatch("/updates/:queries", "updates");
 dispatch("/updates/:queries", "updates");
 function updates() {
 function updates() {
 	header('Content-Type: application/json; charset=utf-8');
 	header('Content-Type: application/json; charset=utf-8');
@@ -74,11 +70,11 @@ function updates() {
 	for ($i = 0; $i < $query_count; $i++) {
 	for ($i = 0; $i < $query_count; $i++) {
 		$id = mt_rand(1, 10000);
 		$id = mt_rand(1, 10000);
 		$world = World::find($id);
 		$world = World::find($id);
+                $world->randomnumber = mt_rand(1, 10000);
+		$world->save();
 		$worlds[] = $world->to_array();
 		$worlds[] = $world->to_array();
 	}
 	}
 
 
-	array_walk($worlds, "update_world");
-
 	return json($worlds);
 	return json($worlds);
 }
 }
 
 

+ 1 - 0
frameworks/Python/cherrypy/app.py

@@ -101,6 +101,7 @@ class CherryPyBenchmark(object):
             world = cherrypy.request.db.query(World).get(id)
             world = cherrypy.request.db.query(World).get(id)
             world.randomNumber = rp()
             world.randomNumber = rp()
             worlds.append(world.serialize())
             worlds.append(world.serialize())
+        cherrypy.request.db.commit()
         return worlds
         return worlds
 
 
     @cherrypy.expose
     @cherrypy.expose

+ 1 - 0
frameworks/Python/turbogears/app.py

@@ -65,6 +65,7 @@ class RootController(TGController):
             world = db_session.query(World).get(id)
             world = db_session.query(World).get(id)
             world.randomNumber = rp()
             world.randomNumber = rp()
             worlds.append(world.serialize())
             worlds.append(world.serialize())
+        db_session.commit()
         return json.dumps(worlds)
         return json.dumps(worlds)
 
 
     @expose("json")
     @expose("json")

+ 4 - 2
frameworks/Python/web2py/app/app/controllers/default.py

@@ -55,8 +55,10 @@ def updates():
     ids = [rp() for _ in xrange(num_queries)]
     ids = [rp() for _ in xrange(num_queries)]
     ids.sort() # To avoid deadlock
     ids.sort() # To avoid deadlock
     for id in ids:
     for id in ids:
-        world = DATABASE(DATABASE.world.id==id).select()[0]
-        world.randomNumber = rp()
+        world = DATABASE.world[id]
+        newNumber = rp()
+        DATABASE(DATABASE.world.id==id).update(randomNumber=newNumber)
+        world.randomNumber = newNumber
         worlds.append(serializeWorld(world))
         worlds.append(serializeWorld(world))
     return jsonOut.dumps(worlds)
     return jsonOut.dumps(worlds)
 
 

+ 1 - 0
frameworks/Python/wheezyweb/app.py

@@ -106,6 +106,7 @@ class UpdatesHandler(BaseHandler):
             world = db_session.query(World).get(id)
             world = db_session.query(World).get(id)
             world.randomNumber = rp()
             world.randomNumber = rp()
             worlds.append(world.serialize())
             worlds.append(world.serialize())
+        db_session.commit()
         return self.json_response(worlds)
         return self.json_response(worlds)
 
 
 class FortuneHandler(BaseHandler):
 class FortuneHandler(BaseHandler):