У меня есть приложение Flask, которое читается из локальной базы данных. Так как в нем не было никаких данных, я выложил его один раз с помощью метода add_to_db
, который я написал. Когда я проверил базу данных после строки, у нее были данные. Однако, когда я удалил строку add_to_db
и перезагрузил страницу, база данных была пуста. По сути, база данных очищается после загрузки страницы.Очистка фляжки DB после pageload
import sqlite3, datetime
from flask import Flask, request, session, g, redirect, url_for, \
abort, render_template, flash
from contextlib import closing
# configuration
DATABASE = 'valids.db'
DEBUG = False
SECRET_KEY = 'development key'
USERNAME = 'admin'
PASSWORD = 'default'
app = Flask(__name__)
app.config.from_object(__name__)
def connect_db():
return sqlite3.connect(DATABASE)
def init_db():
with closing(connect_db()) as db:
with app.open_resource('schema.sql', mode='r') as f:
db.cursor().executescript(f.read())
db.commit()
def add_to_db(seq):
g.db.execute("insert into emergencies (sequence, begin) values (?, ?);",(seq,datetime.datetime.now()))
@app.before_request
def before_request():
g.db = connect_db()
@app.teardown_request
def teardown_request(exception):
db = getattr(g, 'db', None)
if db is not None:
db.close()
@app.route('/<seq>',methods=['GET'])
def show_entries(seq):
print(list(g.db.execute('select * from emergencies')))
add_to_db(seq)
print(list(g.db.execute('select * from emergencies')))
statement="select * from emergencies where sequence = '%s';"%seq
cur = g.db.execute(statement).fetchall()
if len(cur)>0:
cur=cur[0]
else:
return render_template('notfound.html')
if cur[3] is None:
return render_template('house.html')
else:
return render_template('notfound.html')
if __name__ == '__main__':
app.run()