2016-05-01 4 views
0

Я запрограммировал небольшую систему блога в Python, Flask и сделал небольшой шаблон, где я могу редактировать сообщения с помощью CKEdit. У меня есть пять сообщений:Странное поведение SQLAlchemy при обновлении записей

A, B, C, D, E 

Если я хочу, чтобы обновить запись A, как только я сделал правку, я на самом деле получить отредактирован +3 сообщения, в этом случае, после D. Все исходное содержание пост D переписывается по отредактированному контенту A, а исходное содержание A нетронуто.

Это происходит во всех сообщениях, кроме последнего. Если я хочу редактировать D, я получаю редактирование сообщения B, но я редактирую E, пост успешно редактируется.

Я думаю, что это некоторая проблема с указателем базы данных, но не знаю, как работать с ней.

Код обновления это:

def set_post(title, text, timestamp, page): 
    if page != '': #Update 
     data = Post.query.get(page) 
     data.title = title 
     data.text = text 
     db.session.commit() 
[..] 

Я уже проверил полученную «страницу» переменная правильно (вспышка (страница) только после того, если предложение).

Основной двигатель базы данных SQLLite 3.

+3

Вы уверены, что переменная страницы на самом деле является первичным ключом? Можете ли вы показать нам модели, строки, а также какую страницу? – univerio

+0

Пожалуйста, выберите [mcve]. – davidism

ответ

0

Значение page не является первичным ключом. Запрос метода .get() по первичному ключу. Чтобы запросить другой столбец, используйте filter_by(). Пример:

Post.query.filter_by(page=page).first() 
+1

Да, это было. Благодаря! –