Flask приложение не показывает обновленную базу данных sqlite - PullRequest
0 голосов
/ 13 марта 2020

У меня есть приложение flask, в котором пользователь загружает CSV-файл данных об учениках, и его столбцы сохраняются в базе данных Sqlite с некоторыми дополнительными столбцами. Он работает правильно, однако шаблон html не показывает обновленную базу данных, пока я не перезапущу веб-сервер.

Кто-нибудь может мне помочь, как решить эту проблему без перезагрузки сервера вручную? Или, как альтернатива, как перезапустить сервер flask, используя какой-нибудь скрипт python.

Ниже мой код:

@app.route("/pcsv", methods=['GET', 'POST'])
@login_required
def pcsv():
if current_user.is_admin == True:
    conn = sqlite3.connect('portal/site.db') 
    c = conn.cursor()
    df=pd.read_csv('portal/phd-10.csv')
    c.execute('''DROP TABLE phd;''')
    c.execute('''
            CREATE TABLE phd (
                "Application Ref. No." TEXT  PRIMARY KEY UNIQUE
    );''')
    new_columns=set(df.columns)
    new_columns.remove('Application Ref. No.')
    s=list(new_columns)
    for i in range(len(s)):
        c.execute('''ALTER TABLE phd ADD'''+''' "'''+s[i]+'''" '''+'''TEXT''')
    df.to_sql(name='phd', con=db.engine, if_exists = 'append', index=False)
    c.execute('''ALTER TABLE phd ADD Validation TEXT DEFAULT "Pending"''')
    c.execute('''ALTER TABLE phd ADD Comment TEXT DEFAULT "None"''')
    c.execute('''ALTER TABLE phd ADD Submission TEXT DEFAULT "Pending" ''')
    c.execute('''ALTER TABLE phd ADD Tutor_name TEXT DEFAULT "Not Assigned"''')
    c.execute('''ALTER TABLE phd ADD Tutor2 TEXT DEFAULT "Not Assigned"''')
    c.execute('''ALTER TABLE phd ADD alloc_status TEXT DEFAULT "0" ''')
    c.execute('''ALTER TABLE phd ADD Application TEXT ''')
    c.execute('''update phd set Application = "Application Ref. No."; ''')
    conn.commit()
    flash('Database successfully created', 'info')
    return redirect(url_for('upload'))
else:
    return render_template('error.html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...