我正在开发一个基于http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982的烧瓶应用程序。
作为tut的一部分,我试图连接到postgres服务器,其结构如屏幕截图所示。我加了一个你能看到的分贝瓶。
基于tut,我在主文件('routes.py')中有以下代码:
from flask.ext.sqlalchemy import SQLAlchemy
from flask import Flask
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://postgres:123@localhost/flask"
db = SQLAlchemy(app)
from models import User
# db.init_app(app)
db.create_all()
db.session.commit()
admin = User('admin', 'admin@example.com', 'admin1', 'admin1@example.com')
guest = User('admi2', 'admin@ex1ample.com', 'admin', 'admin2@example.com')
# guest = User('guest', 'guest@example.com')
db.session.add(admin)
db.session.add(guest)
db.session.commit()
型号.py:
from flask.ext.sqlalchemy import SQLAlchemy
from werkzeug import generate_password_hash, check_password_hash
db = SQLAlchemy()
class User(db.Model):
__tablename__ = 'users'
uid = db.Column(db.Integer, primary_key = True)
firstname = db.Column(db.String(100))
lastname = db.Column(db.String(100))
email = db.Column(db.String(120), unique=True)
pwdhash = db.Column(db.String(54))
def __init__(self, firstname, lastname, email, password):
self.firstname = firstname.title()
self.lastname = lastname.title()
self.email = email.lower()
self.set_password(password)
def set_password(self, password):
self.pwdhash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.pwdhash, password)
当运行调试器时:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) relation "users" does not exist
LINE 1: INSERT INTO users (firstname, lastname, email, pwdhash) VALU...
^
[SQL: 'INSERT INTO users (firstname, lastname, email, pwdhash) VALUES (%(firstname)s, %(lastname)s, %(email)s, %(pwdhash)s) RETURNING users.uid'] [parameters: {'lastname': 'Admin@Example.Com', 'firstname': 'Admin', 'pwdhash': 'pbkdf2:sha1:1000$eZvJNKHO$64f59c34364e3d6094d126fa3ca2b327ab39e302', 'email': 'admin1'}]
我做错什么了?
您链接到的教程有一个名为“创建用户模型”的部分,在该部分中,您将了解如何使用
CREATE TABLE ...
创建users
表。它提供了一些MySQL特有的语法,虽然您显然在使用Postgres,因此您的命令将略有不同。但是你发布的截图(来自pgAdmin?)显然,flask数据库中的“public”模式没有表,所以显然您还没有创建这个表。你必须创建这个表,你应该可以通过pgAdmin来创建,比如:
您正在初始化数据库两次。
我建议好好看看这个:http://flask.pocoo.org/docs/0.10/patterns/sqlalchemy/
从本质上讲,您需要将内容拆分成更多的文件,以防止导入问题,并使内容更干净一些。我已经完成了下面的工作。注意,我使用了SQLite,因为这个盒子上没有安装Postgres。
应用程序.py
模型.py
routes.py路径
我绝对建议你看一些教程!您将需要它:您应该了解web漏洞、最佳实践等。
相关问题 更多 >
编程相关推荐