当前位置: 首页 > 面试题库 >

flask:sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)关系“用户”不存在

易弘亮
2023-03-14
问题内容

作为tut的一部分,我试图连接到postgres服务器,其结构如屏幕截图所示。我添加了一个db“烧瓶”,您可以看到。

基于该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()

models.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'}]

我究竟做错了什么?


问题答案:

从本质上讲,您将需要将其拆分为几个文件,以防止导入问题并使事情更加整洁。我已经完成了以下工作。注意,我已经使用了SQLite,因为我没有在此框中安装Postgres。

app.py

from flask import Flask
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////test11.db'

models.py

from flask.ext.sqlalchemy import SQLAlchemy
from app import app
db = SQLAlchemy(app)

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

def check_password(self, password):
    return password

route.py

from models import User, db

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')
db.session.add(admin)
db.session.add(guest)
db.session.commit()

我绝对建议查看一些教程!您将需要它:您应该了解Web漏洞,最佳实践等。



 类似资料:
  • 有人能告诉我我做错了什么吗??我从IMDBPY中提取数据,所有的数据都匹配,但现在它不会在我的表中?! sqlalchemy.exc.programmingerror:(psycopg2.programmingerror)无法改编类型'movie'[sql:插入到movie(title,“cast”,plot,username)值(%(title)s,%(cast)s,%(plot)s,%(use

  • 问题内容: 在这种情况下,“ foo_bar”实际上是“ links_userprofile_favorite_feeds”。 问题是,当我进入manage.py shell时: 我懂了 错误: 以下是相关文件和回溯: links.models.py feeds.models.py 迁移中似乎存在该关系,但是,所有关系都不起作用(没有要应用的迁移)。 有人可以帮忙吗?我想建立关系 问题答案: 固定

  • 在psycopg2中将表名作为参数传递给外部公共表似乎不起作用。代码和结果如下。感谢任何帮助。 似乎我在另一个表上又遇到了同样的问题,甚至我将模式和表名分开了。你知道是什么导致了这个错误吗?谢谢! 下面是代码的屏幕截图和输出

  • 在Laravel中,我试图显示Auth::user(用户)和部门之间的关系元素。在用户表中,我有id、名称和部门id。在部门表中,我有id和名称。 在用户模型中,我创建 然后,在刀片模板中我尝试 Auth::user()- 但返回null,不显示链接的部门。Null不正确,所有用户都有部门。苏,有什么帮助吗?你们的关系有什么问题?

  • 问题内容: 我正在尝试在PostgreSQL 8.4.2 DB上运行hibernate模式。每当我尝试运行一个简单的Java代码,例如: 我收到以下错误: 由于我将选项hibernate.show_sql选项设置为true,因此可以看到hibernate尝试运行以下SQL命令: 实际上,它至少应运行以下命令: 有谁知道我需要进行哪些更改才能使Hibernate为PostgreSQL生成正确的SQL

  • 此代码崩溃: 原因:组织。postgresql。util。PSQLException:错误:关系“订阅”不存在 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect Springjpa。数据库平台=组织。冬眠地方话PostgreSQL10方言Spring。jpa。冬眠ddl auto=创建拖放