使用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
最初的想法是權限或路徑問題。你檢查過這兩個嗎? –
那麼我只是跑sudo的腳本,沒有運氣那裏。我應該尋找什麼路徑? – xGlorify
我正在建立一個新的虛擬機來測試,雖然@ RyanO'Donnell。 – xGlorify