Python 页面加载后清空烧瓶DB
我有一个Flask应用程序,可以从本地数据库读取数据。因为它里面没有任何数据,所以我用我编写的add_to_db方法给它播了一次种子。当我在一行之后检查数据库时,它有数据。 但是,当我删除add_to_db行并重新加载页面时,数据库是空的。基本上,数据库在页面加载后会自动清除Python 页面加载后清空烧瓶DB,python,database,sqlite,flask,Python,Database,Sqlite,Flask,我有一个Flask应用程序,可以从本地数据库读取数据。因为它里面没有任何数据,所以我用我编写的add_to_db方法给它播了一次种子。当我在一行之后检查数据库时,它有数据。 但是,当我删除add_to_db行并重新加载页面时,数据库是空的。基本上,数据库在页面加载后会自动清除 import sqlite3, datetime from flask import Flask, request, session, g, redirect, url_for, \ abort, render_
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()
您需要提交更改:
def add_to_db(seq):
g.db.execute("insert into emergencies (sequence, begin) values (?, ?);",(seq,datetime.datetime.now()))
g.db.commit()
或使用在成功时自动提交:
def add_to_db(seq):
with g.db:
g.db.execute("insert into emergencies (sequence, begin) values (?, ?);",(seq,datetime.datetime.now()))