2017-06-11 64 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,也不會在數據庫中存儲任何內容。