Implement atomic_update for SQL.

On sqlalchemy most updates are atomic enough for most use
cases. Anyway, here is an atomic_update that is compatible
to the mongo version.
This commit is contained in:
Elrond 2012-02-12 22:58:08 +01:00
parent 82cd968347
commit 325ca444d1
2 changed files with 15 additions and 1 deletions

View File

@ -1,5 +1,5 @@
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011 MediaGoblin contributors. See AUTHORS.
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -16,6 +16,8 @@
import sys
from mediagoblin.db.sql.base import Session
def _simple_printer(string):
"""
@ -269,3 +271,14 @@ def assure_migrations_table_setup(db):
if not MigrationData.__table__.exists(db.bind):
MigrationData.metadata.create_all(
db.bind, tables=[MigrationData.__table__])
##########################
# Random utility functions
##########################
def atomic_update(table, query_dict, update_values):
table.find(query_dict).update(update_values,
synchronize_session=False)
Session.commit()

View File

@ -21,6 +21,7 @@ except ImportError:
if use_sql:
from mediagoblin.db.sql.fake import ObjectId, InvalidId, DESCENDING
from mediagoblin.db.sql.util import atomic_update
else:
from mediagoblin.db.mongo.util import \
ObjectId, InvalidId, DESCENDING, atomic_update