플라스크의 외래 키에 문제가 있습니다.플라스크 외래 키 제한
Model.py 내가 예를
a = User(16)
b = User(17)
db.session.add(a)
db.session.add(b)
db.session.commit()
를 들어, 일부 사용자를 추가 할 수 있어요
class User(db.Model):
__tablename__ = "users"
__table_args__ = {'extend_existing': True}
user_id = db.Column(db.BigInteger, primary_key=True)
# EDIT
alerts = db.relationship('Alert', backref='user', lazy='dynamic')
def __init__(self, user_id):
self.user_id = user_id
class Alert(db.Model):
__tablename__ = 'alert'
__table_args__ = {'extend_existing': True}
alert_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
user_id = db.Column(db.BigInteger, db.ForeignKey('users.user_id'), nullable=False)
name = db.Column(db.String(ALERT_NAME_MAX_SIZE), nullable=False)
def __init__(self, user_id, name):
self.user_id = user_id
self.name = name
일부 경고 : 내 모델은 다음과 같다
c = Alert(16, 'test')
d = Alert(17, 'name_test')
db.session.add(c)
db.session.add(d)
db.session.commit()
외래 키와 관련된 두 가지 문제가 있습니다 :나는 USER_ID 경고를 수정하려고 할 때 모든 6,첫째, 나는 USER_ID 데이터베이스
alert = Alert.query.get(1)
alert.user_id = 1222 # not in the database
db.session.commit()
에없는 경우에도 그것을 할 수 있어요 그리고 난에 아닌 USER_ID와 경고를 만들 수 있어요 데이터베이스 :
r = Alert(16223, 'test')
db.session.add(r)
왜 나는 관계 제한이 없는지 이해할 수 없습니다. Thx,
에 아무 것도 변경하지 juste? – polku
SQLAlchemy를 사용 중입니다 – WillB
그래도 알 수 있겠지만 데이터베이스는 무엇입니까? SQLite는 외래 키를 기본적으로 적용하지 않으므로 SQLAlchemy에서 작동하도록 특정 구성을 사용해야합니다. – polku