Esempio n. 1
0
    def execute(self, q, vars=[], log_query=1):
        query_count[0] += 1
        q = self.database.db_connector.translate(q)
        vars = map(self.database.db_connector.translate_data, vars)
        
        start = time.time()

        try:
            if vars:
                self.cursor.execute(q, vars)
            else:
                self.cursor.execute(q)
                        
            if self.auto_commit:
                self.conn.commit()

            end = time.time()

            if getattr(self.cursor, 'query', None):
                if orm.verbose_level() > 0:
                    print cyan, '%.5f' % (end-start), normal, '\t',  self.cursor.query
            else:
                if orm.verbose_level() > 0:
                    print cyan, '%.5f' % (end-start), normal, '\t',  q

        except Exception, e:
            self.conn.rollback()
            print >>sys.stderr, 'ERROR: ', q, vars
            traceback.print_exc()
            raise e
Esempio n. 2
0
    def save_row(self, row, cursor, silent, reflect):
        q = "INSERT INTO \"%s\"(%s) values("

        newvals = row.values.keys()
        for i in row.values.keys():
            if row.values[i].__class__ == SQLNone:
                newvals.remove(i)

        vals = []
        changed_columns = []
        for i in newvals:
            v = row.table.column_types[i].pre_save(row.values[i])
            changed_columns.append(i)
            vals.append(v)

        ad = ', '.join( [row.database.db_connector.escape_character() for i in range(0, len(vals))]) + ');'

        quoted_cols = []
        for i in changed_columns:
            if not i.startswith('"'):
                quoted_cols.append('"%s"' % i)
            else:
                quoted_cols.append(i)

        cursor.execute(q % (row.table.table_name, ','.join(quoted_cols)) + ad, vars=vals, log_query=silent)

        if reflect:
            if row.table.primary_key in changed_columns:
                if orm.verbose_level() > 1:
                    print "\tPrimary Key was set in commit, so skipping."
            else:
                if row.table.primary_key:
                    cursor.execute("select CURRVAL('%s_%s_seq');" % (row.table.table_name, row.table.primary_key), log_query=silent)
                    row.values[row.table.primary_key] = cursor.fetchone()['currval']
                    row.original_values[row.table.primary_key] = row.values[row.table.primary_key]
Esempio n. 3
0
 def rollback(self):
     try:
         start = time.time()
         self.conn.rollback()
         end = time.time()
         if orm.verbose_level() > 0:
             print 'Rollback: %.10f' % (end-start)
     except:
         import traceback
         traceback.print_exc()
         self.conn.commit()
Esempio n. 4
0
                return None
        
        def pre_save(self, data):
            if data == None:
                return None
            else:
                data += '-'
                while len(data) % 16 != 0:
                    data += ' '
                
                return self.aes_object.encrypt(data)

except:

    import orm
    if orm.verbose_level() > 0:
        print 'cant use AES encryption for SQLEncrypted column type.'    

    class SQLEncrypt(SQLType):
        py_type = str
        def __init__(self, password='******'):
            SQLType.__init__(self)
        
class SQLExternalFile(SQLType):
    py_type = str
    def __init__(self, file_prefix='/tmp/'):
        SQLType.__init__(self)
        self.file_prefix = file_prefix
        self.file_prefix = self.file_prefix.replace("~", '').replace('..', '')

    def post_load(self, data):