2016-01-22 146 views
-1

使用Flask,SQLAlchemy和SQLite3。在Shell中工作但不是腳本

長話短說;當我運行服務器時,在網頁上輸入我的數據並提交,數據庫中沒有反映這些更改,但我沒有發現任何錯誤。但是當我運行shell /解釋器並輸入我的模型時,db對象然後輸入我的數據數據庫中的更改ARE。這裏是我所指的代碼片段。我必須錯過簡單的東西。

from flask import Flask, render_template, request, session 
from flask_sqlalchemy import SQLAlchemy 

app = Flask(__name__) 

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///core1.db' 
app.config['SQLALCHEMY_ECHO'] = True 

db = SQLAlchemy(app) 

class Motor(db.Model): 

__tablename__ = 'Motor' 

asset_tag = db.Column('Asset Tag', db.String(100), unique=True, primary_key = True) 
horsepower = db.Column('Horsepower', db.Integer) 

def __init__(self, asset_tag, horsepower): 
    self.asset_tag = asset_tag 
    self.horsepower = horsepower 

@app.route('/submit', methods=['GET', 'POST']) 
def submit(): 
    error = None 
    if request.method == 'POST': 
     asset_input = request.form['asset_tag'] 
     horsepower_input = request.form['horsepower'] 
     pass_to_db = Motor(asset_input, horsepower_input) 
     db.session.add(pass_to_db) 
     db.session.commit 
    return render_template('submit.html', error=error) 

if __name__ == "__main__": 
app.run(host="0.0.0.0", debug = True) 

爲了測試是否出事了與我的形式邏輯,我寫了一個腳本,只是把原料輸入和再次我得到了相同的結果。原始用戶變量條目僅在shell中運行時才顯示,但是當我運行該腳本時沒有添加任何內容。這是我在下面使用的測試;

def testentry(): 
    asset_input = raw_input("Enter asset tag: ") 
    horsepower_input = raw_input("Enter the horsepower: ") 
    pass_to_db = Motor(asset_input, horsepower_input) 
    db.session.add(pass_to_db) 
    db.session.commit 

testentry 
+0

最初的想法是權限或路徑問題。你檢查過這兩個嗎? –

+0

那麼我只是跑sudo的腳本,沒有運氣那裏。我應該尋找什麼路徑? – xGlorify

+0

我正在建立一個新的虛擬機來測試,雖然@ RyanO'Donnell。 – xGlorify

回答

1

我沒有關閉我的commit()方法在最後。最後一段代碼現在看起來像這樣並且工作正常;

@app.route('/submit', methods=['GET', 'POST']) 
def submit(): 
error = None 
if request.method == 'POST': 
    asset_input = request.form['asset_tag'] 
    horsepower_input = request.form['horsepower'] 
    pass_to_db = Motor(asset_input, horsepower_input) 
    db.session.add(pass_to_db) 
    db.session.commit() 
    return render_template('submit.html', error=error) 
+1

哎呀,你是對的。我只是沒有在上面的帖子中反映出來。編輯。 – xGlorify

相關問題