def tempkeys(self):
    """Add a new level to make new keys temporary. Used instead of copy in sqex.
    This may *seem* similar to a transaction but the tables are not being duplicated, just referenced.
    At __exit__, old dict is restored (but changes to Tables remain).
    """
    self.levels.append(dict(self.levels[-1]))
    try: yield
    finally: self.levels.pop()