2017-07-21 19 views
1

高さを記録するフラスコを使用してUdemyコースで作業しています。私たちは、PostgreSQLを使用している時点では、と私はそれがインストールされている、と私は彼のコードは正確にコピーした:その後、彼は仮想ENVでのpythonを実行するように言うときSQLAlchemy NameError:名前 'db'が定義されていません(?)

from flask import Flask, render_template, request 
from flask.ext.sqlalchemy import SQLAlchemy 

app=Flask(__name__) 

app.config(['SQLALCHEMY_DATABASE_URI']='postgresql://postgres:password 
@localhost/height_collector') 

db=SQLAlchemy(app) 

class Data(db.Model): 
__tablename__='data' 
id=db.Column(db.Integer, primary_key=True) 
email_=db.Column(db.String(120), unique=True) 
height_=db.Column(db.Integer) 

def __init__(self, email_, height_): 
    self.email_=email_ 
    self.height_=height_ 
@app.route("/") 
def index(): 
    return render_template("index.html") 

@app.route("/success", methods=["post"]) 
def success(): 
if request.method=='POST': 
    email=request.form['email_name'] 
    height=request.form['height_name'] 
    print(height,email) 
return render_template("success.html") 

if __name__=='__main__': 
    app.debug=True 
app.run() 

問題は、遊びに来て、 PostgreSQLでデータベースを作成するdb.create_allを()、私はこのエラーを取得:入力 NameErrorに ファイル<「STDIN」>、行1:名前「デシベル」が

ない続行する方法がわから

が定義されていません、どんな入力も高く評価されます。

答えて

1

コードdb = SQLAlchemy()を保存できるdb.pyを作成することができます。次に、app.pyでインポートします。 dbを呼び出すことができるようになりました。または単に削除するAPPdb=SQLAlchemy(app)

1

おそらく、dbとテーブルスキーマを定義するために、他のコードを最初に実行する必要があると思います。その後、db.create_all()を実行できます。

from flask import Flask, render_template, request 
from flask.ext.sqlalchemy import SQLAlchemy 

app = Flask(__name__) 

app.config(['SQLALCHEMY_DATABASE_URI'] = 
      'postgresql://postgres:[email protected]/height_collector') 

db = SQLAlchemy(app) 

class Data(db.Model): 
    __tablename__ = 'data' 
    id = db.Column(db.Integer, primary_key=True) 
    email_ = db.Column(db.String(120), unique=True) 
    height_ = db.Column(db.Integer) 

    def __init__(self, email_, height_): 
     self.email_ = email_ 
     self.height_ = height_ 

db.create_all() 
0

pythonコマンドを実行して、pythonシェルを起動します。 dbをインポートして定義します。

from main import db 
db.drop_all() 
db.create_all() 
関連する問題