2015-06-10 2 views
0

Я хочу, чтобы обновить свою базу данных с помощью кода пропущено приводится ниже:Как избежать вставки дубликатов вставки?

@app.route('/update') 
def update(): 
    os.system('python update.py') 
    return redirect(url_for('home')) 

Но когда я использую gunicorn -w 4, чтобы запустить приложение и нажмите на URL http://127.0.0.1:5000/update один раз, он будет работать python update.py дважды. Один и тот же контент следует вставлять в базу данных дважды. Я думаю, что это может быть вызвано многократной обработкой стрельбы.

Я также хочу, чтобы колонка была уникальной, но она мне не подходит.

Как я могу решить проблему? И не могли бы вы сказать мне несколько хороших решений для автоматического обновления базы данных каждый день.

+0

Что такое writedatabase? Вы вызываете один и тот же URL более одного раза? Это ваш оригинальный отступ? – wonderb0lt

+0

Если у вас действительно есть инструкция import в вашем цикле, означает, что вы импортируете writedatabase каждый раз, а не один раз? Должно ли это быть вне цикла? а затем просто используйте 'h' в цикле. – Craicerjack

+1

для этого у вас должен быть уникальный столбец, чтобы база данных давала ошибку дублирования –

ответ

0

Необходимо изменить состояние системы, например внести любые изменения в базу данных, по запросам POST. Итак:

@app.route('/update', methods=['POST']) 
def update(): 
    os.system('python update.py') 
    return redirect(url_for('home')) 

В противном случае вы рискуете двойной пробег на несколько раз, как браузер предзагрузка, перезапуск браузера, unclosing вкладки браузера и многих других.

Я также использовал бы from . import update вместо os.system.

+0

Спасибо! Ваш ответ решил мою проблему! Но я использую этот код, чтобы этого избежать, он не работал, когда я дважды нажимаю кнопку/update post. '' '@ app.route ('/ update', methods = ['POST']) def update(): если« обновлено »в сеансе: return« вы обновили »session ['updated'] = True os.system ('python update.py') return redirect (url_for ('home')) '' ' – Jack

Смежные вопросы