簡體   English   中英

使用 null 填充表的燒瓶 sqlalchemy 外鍵

[英]flask-sqlalchemy foreignkey populating table with null

我試圖在我的flask-sqlalchemy中的一個表上實現一個外鍵,但一直收到這個錯誤:

sqlalchemy.exc.IntegrityError: (psycopg2.errors.NotNullViolation) null value in column "user_id" of relation "applications" violates not-null constraint DETAIL:  Failing row contains (3, Company ABC, Software Engineer, New York, NY, USA, Applied, , 2022-09-09, null).

這是代碼:

from flask_login import UserMixin

from database.database import db


class User(UserMixin, db.Model):

    __tablename__ = 'users'

     id = db.Column(db.Integer, primary_key=True)
     email = db.Column(db.String(), nullable=False)
     password = db.Column(db.String(), nullable=False)
     name = db.Column(db.String(), default='', nullable=True)
     application = db.relationship('JobApplicationTracker', lazy=True,backref='author')

    
     def __repr__(self) -> str:
         return self.email

     def __str__(self) -> str:
         return self.email

代碼:

from database.database import db

class JobApplicationTracker(db.Model):

    __tablename__ = 'applications'

    id = db.Column(db.Integer, primary_key=True, nullable=False)
    name = db.Column(db.String(), nullable=False)
    title = db.Column(db.String(), nullable=False)
    location = db.Column(db.String(), nullable=False)
    status = db.Column(db.String(), nullable=False)
    notes = db.Column(db.String(), default='', nullable=True)
    date_applied = db.Column(db.String(), nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)


    def __repr__(self):
        return f'{self.title} at {self.name}'

    def __str__(self):
        return f'{self.title} at {self.name}'
    

我有一個“應用程序”表和一個“用戶”表。

問題是因為您在 JobApplicationTracker model 中為 user_id 列設置了 nullable=False,但是在嘗試添加時,您正在為 user_id 傳遞 null 值。

您可以嘗試創建一個用戶,傳遞該用戶 ID,然后一切正常。 如果您希望它在沒有用戶 ID 的情況下工作,請嘗試使用 nullable=true。 同樣,在 model 中更改它不會反映在表中。 您可能必須在數據庫中手動更改它

看起來我沒有傳入用戶

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM