Flask Сервер sqlalchemy.ex c .ProgrammingError - PullRequest
0 голосов
/ 26 апреля 2020

Я работаю над небольшим приложением flask и получаю сообщение об ошибке, в котором говорится, что созданная мной таблица 'users' не существует.

Я использую URI для heroku postgres для база данных и файл .env для загрузки переменных среды сервера.

Я использую kubuntu 18.04. все модули, которые я использую, установлены правильно. Я вообще не понимаю, в чем проблема.

Может кто-нибудь помочь мне быстро.

application.py

import os

from flask import Flask, session, render_template, request
from flask_session import Session
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# Check for environment variable
if not os.getenv("DATABASE_URL"):
    raise RuntimeError("DATABASE_URL is not set")
app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("DATABASE_URL")
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)

"""
    The SQL table for the users registered in the application.
"""
class User(db.Model):
    __tablename__ = "users"
    username = db.Column(db.String, primary_key = True)
    password = db.Column(db.String, nullable = False)
    user_created_on = db.Column(db.DateTime, nullable = False)

    def __init__(self, username, password, user_created_on = None):
        self.username = username
        self.password = password
        self.user_created_on = datetime.now()

"""
    The SQL table for the books.
"""
class Books(db.Model):
    __tablename__ = "books"
    isbn = db.Column(db.String, primary_key = True)
    title = db.Column(db.String, nullable = False)
    author = db.Column(db.String, nullable = False)
    year = db.Column(db.Integer, nullable = False)

# Configure session to use filesystem
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
Session(app)

# Set up database
# engine = create_engine(os.getenv("DATABASE_URL"))
# db = scoped_session(sessionmaker(bind=engine))

"""
    The home page for the application.
"""
@app.route("/")
@app.route("/home")
@app.route("/index")
def index():
    return render_template("index.html")

"""
    The registration page for the application.
"""
@app.route("/registration")
def registration():
    return render_template("registration.html")

"""
    To check the registration eligibility and status
"""
@app.route("/registration_process", methods = ["POST", "GET"])
def registering():
    if request.method == "GET":
        return render_template("index.html")
    username = request.form["username"]
    password = request.form.get("password")
    if (User.query.get(username) == None):
        user = User(username, password)
        db.session.add(user)
        db.session.commit()
        return render_template("success.html", message = "Registered Successfully")
    else:
        return render_template("login.html", message = "You have already registered, please login")

@app.route("/tologin")
def tologin():
    return render_template("login.html")

@app.route("/login", methods = ["POST", "GET"])
def login():
    if request.method == "GET":
        return render_template("index.html")
    username = request.form.get("username")
    password = request.form.get("password")
    if (User.query.get(username) != None):
        user = User.query.get(username)
        if (user.password != password):
            return render_template("login.html", mesage = "Incorrect Password!")
        else:
            return render_template("success.html", message = "Loged in successfully", user = username)
    else:
        return render_template("registration.html", message = "You have not yet registered")

@app.route("/admin")
def admin():
    all_users = User.query.all()
    return render_template("adminpage.html", users = all_users)

def main():
    db.create_all()
    print("Database tables created")

if __name__ == "__main__":
    with app.app_context():
        main()

И это ошибка, которую я продолжаю регистрировать

sqlalchemy.exc.ProgrammingError

ProgrammingError: (psycopg2.errors.UndefinedTable) relation "users" does not exist
LINE 2: FROM users 
             ^

[SQL: SELECT users.username AS users_username, users.password AS users_password, users.user_created_on AS users_user_created_on 
FROM users 
WHERE users.username = %(param_1)s]
[parameters: {'param_1': u'piyush'}]
(Background on this error at: http://sqlalche.me/e/f405)

. html

{% extends "layout.html" %}
{% block content %}
<h1>Hello There!</h1>
<form action="/registration_process" method="post">
  <p>Username</p><input type="text" name="username">
  <p>Password</p><input type="password" name="password"><br><br>
  <input type="submit" name="submit" value="Submit">
</form>
{% endblock %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...