postgresql SQLAlchemy名称错误:名称“db”未定义(?)

yqyhoc1h  于 2022-12-26  发布在  PostgreSQL
关注(0)|答案(7)|浏览(157)

我正在做一个Udemy课程,使用 flask 来记录高度。我正在使用PostgreSQL,我已经安装了它,我完全复制了他的代码:

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()

当他说在虚拟环境中运行python,然后输入:db.create_all()在PostgreSQL中创建一个数据库时,问题就出现了,我得到了这个错误:文件〈'stdin'〉,名称中的第1行错误:未定义名称“db”
不知道如何继续,任何输入将不胜感激。

km0tfn4u

km0tfn4u1#

您可以创建一个db.py,在其中存储代码db = SQLAlchemy()。然后在app.py中导入。现在您可以调用db。或者只是删除db=SQLAlchemy(app)中的APP

v64noz0r

v64noz0r2#

我认为您可能需要先运行一些其他代码,以便定义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: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_

db.create_all()
os8fio9y

os8fio9y3#

我刚刚遇到这个错误,这是因为我没有在调用db函数之前导入db.如果你在终端中运行,'from yourappname import db'和你正在运行的任何其他函数.

//IN TERMINAL
from yourappname import db
cclgggtu

cclgggtu4#

运行python命令启动python shell,然后导入db进行定义:

from main import db
db.drop_all()
db.create_all()
ojsjcaue

ojsjcaue5#

您需要设置FLASK env变量。
在项目的顶层目录中创建一个.flaskenv文件将此文件添加到.flaskenv文件中:

export FLASK_APP=myappfile.py

在您的环境中安装dotenv

pip install python-dotenv

现在,如果您运行应用程序,它应该会拾取env变量。

eqqqjvef

eqqqjvef6#

键入以下内容,即可正常工作:

cd flask-app
venv\scripts\activate
python3
from app import db
db.create_all()
dvtswwa3

dvtswwa37#

#write at top of your model
from . import db

相关问题