Flask-SQLAlchemy关系错误(关系“表名”不存在)

3
我正在尝试在User_Info表和其他表之间建立外键(一对多关系),但是出现以下错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "user_info" does not exist LINE 1: INSERT INTO user_info (username, first_name, last_name, gend... ^

[SQL: INSERT INTO user_info (username, first_name, last_name, gender, date_of_birth, profile_img_url) VALUES (%(username)s, %(first_name)s, %(last_name)s, %(gender)s, %(date_of_birth)s, %(profile_img_url)s) RETURNING user_info.id] [parameters: {'username': 'gohammedhl', 'first_name': 'Ameer', 'last_name': 'Farqad', 'gender': '1', 'date_of_birth': '2019-09-25', 'profile_img_url': 'bla bla'}] (Background on this error at: http://sqlalche.me/e/f405)

以下是我的表格:
class User_Info(UserMixin, db.Model):
    __tablename__ = "user_info"
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), nullable=False, unique=True)
    first_name = db.Column(db.String(30), nullable=False)
    last_name = db.Column(db.String(30), nullable=False)
    gender = db.Column(db.String(2), nullable=False)
    date_of_birth = db.Column(db.DATE, nullable=False)
    profile_img_url = db.Column(db.String, nullable=True)
    post = db.relationship("Posts", backref="post_author", lazy=True)
    comment = db.relationship("Comments", backref="comment_author", lazy=True)
    phone_number = db.relationship("User_Auth", backref="ph_no_owner", lazy=True)

class User_Auth(UserMixin, db.Model):    
    __tablename__ = "user_auth"
    id = db.Column(db.Integer, primary_key=True)
    phone_no = db.Column(db.String(100), nullable=False, unique=True)
    password_hash = db.Column(db.String(300), nullable=False)
    ph_no_owner_id = db.Column(db.Integer, db.ForeignKey("user_info.id"))

class Posts(db.Model):
    __tablename__ = "posts"
    id =  db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(150), nullable=False)
    img_url = db.Column(db.String(400), nullable=True)
    post_date = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
    post_author_id = db.Column(db.Integer, db.ForeignKey("user_info.id"))


class Comments(db.Model):
    __tablename__ = "comments"
    id =  db.Column(db.Integer, primary_key=True)
    comment = db.Column(db.String(150), nullable=False)
    comment_date = db.Column(db.DateTime, default=datetime.utcnow)
    comment_author_id = db.Column(db.Integer, db.ForeignKey("user_info.id"))    

有什么想法吗? 提前致谢!


你在创建模型后运行了数据库迁移吗? - D Dhaliwal
实际上不是,我只是初始化了它。 - Mohammed Adnan
假设您正在使用 Flask-Migrate,则需要在使用 flask db migrate 进行初始化后创建迁移,该命令将创建迁移文件。然后,您需要使用 flask db upgrade 运行这些迁移文件。 - D Dhaliwal
实际上我刚刚使用 Python 解释器重新创建它,结果非常顺利!但是我仍然不明白为什么在代码编辑器中它不能正常工作! - Mohammed Adnan
1个回答

4
我搞定了!
它缺少了:
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = ("postgresql://postgres:PasswordHere@localhost/dbName")
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)

并且:

with app.app_context():
    db.create_all()

虽然这段代码是在另一个文件中创建的用于创建一些内容,但直到我将它放入上面表格所在的同一个文件中,它才能正常工作!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接