我正在做一个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”
不知道如何继续,任何输入将不胜感激。
7条答案
按热度按时间km0tfn4u1#
您可以创建一个db.py,在其中存储代码
db = SQLAlchemy()
。然后在app.py中导入。现在您可以调用db。或者只是删除db=SQLAlchemy(app)
中的APP
v64noz0r2#
我认为您可能需要先运行一些其他代码,以便定义
db
和表模式,然后才能运行db.create_all()
。os8fio9y3#
我刚刚遇到这个错误,这是因为我没有在调用db函数之前导入db.如果你在终端中运行,'from yourappname import db'和你正在运行的任何其他函数.
cclgggtu4#
运行python命令启动python shell,然后导入db进行定义:
ojsjcaue5#
您需要设置FLASK env变量。
在项目的顶层目录中创建一个
.flaskenv
文件将此文件添加到.flaskenv
文件中:在您的环境中安装dotenv
现在,如果您运行应用程序,它应该会拾取env变量。
eqqqjvef6#
键入以下内容,即可正常工作:
dvtswwa37#