2017-06-11 67 views
1

我刚开始学习在Flask上开发(通过Udacity的'fullstack'课程)。烧瓶:数据没有保存在服务器重启/关闭

但我想知道,当我重新启动/关闭我的服务器时,所有的数据我从我的“网站”更改了服务器以前的状态,是不是正常? (我不知道我是否清楚地解释了这个问题)。

如果是,如何使数据保存在数据库中即使关闭服务器?

这是一个什么样的代码看起来像一个例子:

from flask import Flask, render_template, request, redirect, url_for, flash, jsonify 
from sqlalchemy import create_engine 
from sqlalchemy.orm import sessionmaker 
from database_setup import Base, Restaurant, MenuItem 


app = Flask(__name__) 
engine = create_engine('sqlite:///restaurantmenu.db') 
Base.metadata.bind = engine 
DBSession = sessionmaker(bind=engine) 
session = DBSession() 


(...) 


@app.route('/restaurants/<int:restaurant_id>/new', methods=['GET', 'POST']) 
def newMenuItem(restaurant_id): 

    if request.method == 'POST': 

     newItem = MenuItem(name=request.form['name'], description=request.form['description'], price=request.form['price'], course=request.form['course'], restaurant_id=restaurant_id) 
     session.add(newItem) 
     session.commit 
     flash("new menu item created !") 

     return redirect(url_for('restaurantMenu', restaurant_id=restaurant_id)) 

    else: 

     return render_template('newmenuitem.html', restaurant_id=restaurant_id) 


(...) 


if __name__ == '__main__': 
    app.secret_key = 'super_secret_key' 
    app.debug = True 
    app.run(host = '0.0.0.0', port=5000) 
+0

如果这是您发布的工作代码,请使用带括号的session.commit()。现在你永远不会调用commit,也不会在数据库中存储任何内容。 – Maarten

+0

谢谢,它的作品哈哈我现在觉得愚蠢,但它是一个初学者的错误,我猜! – Brumor

+0

这没关系。你很快就能够发现丢失的括号。我发布了一个你可以接受的答案,这样问题就被关闭了。 – Maarten

回答

1

只是复制我的评论到答案。 如果这是您发布的工作代码,请尝试使用session.commit()和括号。现在你永远不会调用commit,也不会在数据库中存储任何内容。