Insert or update into the database.

        Note that every field will be updated, not just the changed
        one.

def _saveDB(self):
        """Insert or update into the database.

        Note that every field will be updated, not just the changed
        one.
        """
        # We're a "fresh" copy now
        self._updated = time.time()
        if self._new:
            operation = 'INSERT'
            if not self._validID():
                self._setID(self._nextSequence())
            # Note that we assign this ID to our self
            # BEFORE possibly saving any of our attribute
            # objects that might be new as well. This means
            # that they might have references to us, as long
            # as the database does not require our existence
            # yet.
            #
            # Since mysql does not have Sequences, this will
            # not work as smoothly there. See class
            # MysqlForgetter below.
        else:
            operation = 'UPDATE'
        (sql, fields) = self._prepareSQL(operation)
        values = []
        for field in fields:
            value = getattr(self, field)
            # First some dirty datatype hacks
            if DateTime and type(value) == DateTime.DateTimeType:
                # stupid psycopg does not support it's own return type..
                # lovely..
                value = str(value)
            if DateTime and type(value) == DateTime.DateTimeDeltaType:
                # Format delta as days, hours, minutes seconds
                # NOTE: includes value.second directly to get the
                # whole floating number
                value = value.strftime("%d %H:%M:") + str(value.second)
            if value is True or value is False:
                # We must store booleans as 't' and 'f' ...
                value = value and 't' or 'f'
            if isinstance(value, Forgetter):
                # It's another object, we store only the ID
                if value._new:
                    # It's a new object too, it must be saved!
                    value.save()
                try:
                    (value,) = value._getID()
                except:
                    raise "Unsupported: Can't reference multiple-primary-key: %s" % value
            values.append(value)
        cursor = self.cursor()
        cursor.execute(sql, values)
        # cursor.commit()
        cursor.close()
        self._new = False
        self._changed = None