Как сохранить текущее состояние объекта InteractiveInterpreter в базе данных?

Я пытаюсь построить онлайн оболочку Python. Я выполняю команды, создавая экземпляр InteractiveInterpreter и используйте команду runcode, Для этого мне нужно сохранить состояние интерпретатора в базе данных, чтобы в командах можно было использовать переменные, функции, определения и другие значения в глобальном и локальном пространствах имен. Есть ли способ сохранить текущее состояние объекта InteractiveInterpreter это может быть получено позже и передано в качестве аргумента local в InteractiveInterpreter конструктор или если я не могу сделать это, какие альтернативы у меня есть для достижения упомянутой функциональности?
Ниже приведен псевдокод того, чего я пытаюсь достичь


def fun(code, sessionID):
     session = Session()
     # get the latest state of the interpreter object corresponding to SessionID
     vars = session.getvars(sessionID)
     it = InteractiveInterpreter(vars)
     it.runcode(code)
     #save back the new state of the interpreter object
     session.setvars(it.getState(),sessionID)

Здесь сессия является экземпляром таблицы, содержащей всю необходимую информацию.

2 ответа

Хорошо, если pickle не работает, вы можете попробовать создать экземпляр класса в формате (примерно), как показано ниже:

class MyClass:
    def __init__(self, OldClass):
        for d in dir(OldClass):
            # go through the attributes from the old class and set
            # the new attributes to what you need

Я верю pickle Пакет должен работать на вас. Ты можешь использовать pickle.dump или же pickle.dumps сохранить состояние большинства объектов. (затем pickle.load или же pickle.loads чтобы вернуть его)

Другие вопросы по тегам