def insert_row_from_dict(env, table, dictionary): items = dictionary.items() # XXX this might be slightly retarded keys = [str(item[0]) for item in items] # values = ["'%s'" % str(item[1]) for item in items] values = [item[1] for item in items] sql = "INSERT INTO %s (%s) VALUES (%s)" sql = sql % ( table, ','.join(keys), ','.join(['%s' for v in values])) execute_non_query(env, sql, *values) def update_row_from_dict(env, table, key, value, dictionary): items = dictionary.items() # XXX this might be slightly retarded sql = "UPDATE %s SET %s WHERE %s='%s'" sql = sql % ( table, ', '.join(["%s='%s'" % (item[0], item[1]) for item in items]), key, value) execute_non_query(env, sql) def insert_update(env, table, key, value, items): if get_first_row(env, "SELECT * FROM %s WHERE %s=%s" % (table, key, value)): update_row_from_dict(env, table, key, value, items) else: items[key] = value insert_row_from_dict(env, table, items)