2016-01-22 135 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

相关问题