我正在使用烧瓶记录高度的Udemy课程。我正处于使用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行 NameError:名称'db'未定义
不确定如何继续,任何输入都将不胜感激。
答案 0 :(得分:2)
我认为您可能需要先运行其他一些代码才能定义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()
答案 1 :(得分:2)
你可以创建一个db.py来存储代码db = SQLAlchemy()
。然后在app.py中导入。现在你可以调用db了。或者只是删除APP
db=SQLAlchemy(app)
答案 2 :(得分:0)
通过运行命令python启动python shell。然后导入db来定义它:
from main import db
db.drop_all()
db.create_all()
答案 3 :(得分:0)
您需要设置FLASK env变量。
在项目的顶级目录中创建一个.flaskenv
文件
将此添加到您的.flaskenv
文件中:
export FLASK_APP=myappfile.py
在您的环境中安装dotenv
pip install python-dotenv
现在,如果您运行该应用程序,它将选择您的env变量。
答案 4 :(得分:-1)
输入以下内容,它将起作用:
cd flask-app
venv\scripts\activate
python3
from app import db
db.create_all()