2017-06-24 27 views
-3

FlaskとSQLAlchemyを使用してWebアプリケーションを構築しています。 私はこのエラーの理由を知ることができませんNameError: name'db' is not defined あなたの助けに本当に感謝します。NameError:名前 'db'が定義されていません

(wfdb-venv) J-2:wfdb j$ python3 manage.py shell 
Python 3.6.0 (v3.6.0:41df79263a11, Dec 22 2016, 17:23:13) 
Type 'copyright', 'credits' or 'license' for more information 
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help. 

In [1]: from app import User 

In [2]: u = User() 

In [3]: u.username = 'testusr' 

In [4]: u.password = 'testpwd' 

In [5]: db.session.add(u) 
--------------------------------------------------------------------------- 
NameError         Traceback (most recent call last) 
~/Documents/Learning/Python/Flask/wfdb/wfdb-venv/lib/python3.6/site-packages/flask_script/commands.py in <module>() 
----> 1 db.session.add(u) 

NameError: name 'db' is not defined 

ここで私はfrom app import Userをやっているが、5行目で、あなたはそれを期待しているDB適切documentation

from flask import Flask, render_template 
from flask_sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///database.db" 
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 

db = SQLAlchemy(app) 

class User(db.Model): 
    id = db.Column(db.Integer(), primary_key=True) 
    username = db.Column(db.String(), unique=True) 
    password = db.Column(db.String()) 

    def __repr__(self): 
     return '<User {}>'.format(self.username) 

@app.route("/") 
def home(): 
    return render_template("index.html") 

if __name__ == "__main__": 
    app.run() 

そしてmanage.py

#!/usr/bin/env python 

from flask_script import Manager 
from app import app, db 

manager = Manager(app) 


@manager.shell 
def make_shell_context(): 
    """ Creates a python REPL with several default imports 
     in the context of the app 
    """ 

    return dict(app=app, db=db) 


if __name__ == "__main__": 
    manager.run() 
+4

'from app import User、db'? – Artyer

答えて

0

あなたのコードに応じて定義されている、app.pyですdbについて知っており、ですn appですが、はありません。をインポートしました。

import app 
u = app.User() 
u.username = 'testusr' 
u.password = 'testpwd' 
app.db.session.add(u) 
関連する問題