コード例 #1
0
def db_scan(table):
    querylog.log_counter('db_scan:' + table)
    result = db.scan(TableName=db_prefix + '-' + table)
    output = []
    querylog.log_counter('db_scan_items', len(result['Items']))
    for item in result['Items']:
        output.append(db_decode(item))
    return output
コード例 #2
0
ファイル: utils.py プロジェクト: LotusterHaar/hedy
def db_del_many (table, data, not_primary=False):
    querylog.log_counter('db_del_many:' + table)
    # We define a recursive function in case the number of results is very large and cannot be returned with a single call to db_get_many.
    def batch ():
        to_delete = db_get_many (table, data, not_primary)
        if len (to_delete) == 0:
            return
        for item in to_delete:
            db_del (table, db_key (table, item))
        batch ()
    batch ()
コード例 #3
0
ファイル: utils.py プロジェクト: LotusterHaar/hedy
def db_get_many (table, data, not_primary=False):
    querylog.log_counter('db_get_many:' + table)
    if not_primary:
        field = list (data.keys ()) [0]
        # We use ScanIndexForward = False to get the latest items from the Programs table
        result = db.query (TableName = db_prefix + '-' + table, IndexName = field + '-index', KeyConditionExpression = field + ' = :value', ExpressionAttributeValues = {':value': {'S': data [field]}}, ScanIndexForward = False)
    else:
        result = db.query (TableName = db_prefix + '-' + table, Key = db_encode (db_key (table, data)))
    data = []
    querylog.log_counter('db_get_many_items', len(result['Items']))
    for item in result ['Items']:
        data.append (db_decode (item))
    return data
コード例 #4
0
ファイル: utils.py プロジェクト: LotusterHaar/hedy
def db_get (table, data, not_primary=False):
    querylog.log_counter('db_get:' + table)
    # If we're querying by something else than the primary key of the table, we assume that data contains only one field, that on which we want to search. We also require that field to have an index.
    if not_primary:
        field = list (data.keys ()) [0]
        result = db.query (TableName = db_prefix + '-' + table, IndexName = field + '-index', KeyConditionExpression = field + ' = :value', ExpressionAttributeValues = {':value': {'S': data [field]}})
        if len (result ['Items']):
            return db_decode (result ['Items'] [0])
        else:
            return None
    else:
        result = db.get_item (TableName = db_prefix + '-' + table, Key = db_encode (db_key (table, data)))
        if 'Item' not in result:
            return None
        return db_decode (result ['Item'])
コード例 #5
0
def db_describe(table):
    querylog.log_counter('db_describe:' + table)
    return db.describe_table(TableName=db_prefix + '-' + table)
コード例 #6
0
def db_del(table, data):
    querylog.log_counter('db_del:' + table)
    return db.delete_item(TableName=db_prefix + '-' + table,
                          Key=db_encode(db_key(table, data)))
コード例 #7
0
def db_update(table, data):
    querylog.log_counter('db_update:' + table)
    return db.update_item(TableName=db_prefix + '-' + table,
                          Key=db_encode(db_key(table, data)),
                          AttributeUpdates=db_encode_updates(
                              db_key(table, data, True)))
コード例 #8
0
def db_create(table, data):
    querylog.log_counter('db_create:' + table)
    return db.put_item(TableName=db_prefix + '-' + table, Item=db_encode(data))