Сеанс базы данных Python (meta.Session) - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть тонна кода, который редактирует базу данных, но я хочу загрузить все данные, которые мне нужно отредактировать или добавить в сеанс, вернуть веб-страницу, и как только пользователь просмотрит данные, затем передайте в базу данных. Примерно так:

def index(self):
    empsTbl = meta.Session.query(model.Person).all();
    newEmp = model.Person()
    newEmp.userid = row[0].strip()
    meta.Session.add(newEmp)
    return render("/update.html")

def commitSession(self):
    meta.Session.commit()

Если я попытаюсь нажать кнопку веб-страницы, чтобы вызвать commitSession def, сессия будет пустой. Я пробовал некоторые вещи на модели, такие как:

Session.configure(autoflush=False, autocommit = False, bind=engine)

и я также изменил базовый контроллер. Я удалил код:

meta.Session.remove()

Чтобы он не удалял сеанс после каждого вызова.

Я также пытался использовать merge , чтобы посмотреть, сохранит ли это сеанс в постоянной базе данных. Session:

meta.Session.merge(newEmp)

Но я все еще не могу заставить его работать.

Изменить:

Если бы кто-нибудь мог дать совет о том, как лучше выбрать сеанс Python, это было бы очень полезно

1 Ответ

1 голос
/ 21 ноября 2011

Я надеюсь, что это не так, но кажется, что вы еще не понимаете жизненные циклы, в которых живет ваше веб-приложение.в вашем случае у вас есть 2 жизненных цикла, потому что у вас есть 2 действия.2 сценария запроса / ответа.Вы должны понимать, что (в основном) все, что вы делаете в действии, оно остается там.ваша сессия базы данных действия "index" является другой как та, что в "commitSession", потому что эта сессия в "commitSession" пуста.Зачем?Потому что вы просто фиксируете только что созданный сеанс.

, что вам нужно сделать, это найти рабочий путь для вас и вашей причины перенести информацию из действия «index» в действие «commitSession».наиболее часто используемый способ - это сериализовать информацию, поместить ее в вашу веб-сессию, десериализовать ее в «commitSession» -action, записать в базу данных и сделать недействительной вашу информацию в веб-сессии.или вы помещаете всю информацию из «индекса» в некоторые скрытые поля и снова публикуете ее в «commitSession».

...