docs: 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