Project

General

Profile

« Previous | Next » 

Revision 2641

sql_gen.py: ColDict: Take a keys_table param for operations that require the output table. Use this to convert all string keys to sql_gen.Col objects.

View differences:

lib/sql_gen.py
178 178
class ColDict(dict):
179 179
    '''A dict that automatically makes inserted entries Col objects'''
180 180
    
181
    '''For params, see dict()'''
182
    def __init__(self, keys_table, *args, **kw_args):
183
        dict.__init__(self, *args, **kw_args)
184
        
185
        self.table = keys_table
186
    
187
    def __getitem__(self, key):
188
        return dict.__getitem__(self, self._key(key))
189
    
181 190
    def __setitem__(self, key, value):
182
        return dict.__setitem__(self, key, as_Col(value, name=key))
191
        return dict.__setitem__(self, self._key(key), as_Col(value, name=key))
183 192
    
184 193
    def update(self, dict_):
185 194
        for key, value in dict_.iteritems(): self[key] = value
195
    
196
    def _key(self, key): return as_Col(key, self.table)
186 197

  
187 198
##### Functions
188 199

  
lib/sql.py
859 859
    '''Recovers from errors.
860 860
    Only works under PostgreSQL (uses INSERT RETURNING).
861 861
    '''
862
    row = sql_gen.ColDict(row)
862
    row = sql_gen.ColDict(table, row)
863 863
    if pkey_ == None: pkey_ = pkey(db, table, recover=True)
864 864
    
865 865
    try:
......
922 922
    @return sql_gen.Col Where the output pkeys are made available
923 923
    '''
924 924
    out_table = sql_gen.as_Table(out_table)
925
    mapping = sql_gen.ColDict(mapping)
925
    mapping = sql_gen.ColDict(out_table, mapping)
926 926
    
927 927
    def log_debug(msg): db.log_debug(msg, level=1.5)
928 928
    def col_ustr(str_):
......
1017 1017
    insert_in_pkeys = insert_pkeys_table('in')
1018 1018
    
1019 1019
    # Do inserts and selects
1020
    join_cols = sql_gen.ColDict()
1020
    join_cols = sql_gen.ColDict(out_table)
1021 1021
    while True:
1022 1022
        if limit_ref[0] == 0: # special case
1023 1023
            log_debug('Creating an empty pkeys table')

Also available in: Unified diff