2014-06-25 2 views
0

의존성 규칙에 문제가 있습니다. 내 인생에 대한 관계를 삭제하지 않고 단 하나의 행을 삭제하는 방법을 알아낼 수 없습니다.관계를 삭제하지 않고 sql-alchemy에서 하나의 행만 삭제하는 방법

테이블 :

User 
-id 
-name 
Article 
    -id 
    -title 
UserArticle 
    -id 
    -user_id 
    -article_id 

이 실행 중이, 내 캐스케이드 규칙에 따라이 AssertionError를 함께하거나 오류가 밖으로 연결된 사용자 및 기사 삭제합니다.

ua = UserArticle.query.first() 
db.session.delete(ua) 
db.session.commit() 

다음은 관계 중 하나입니다.

class UserArticle(db.Model): 
    user = relationship("User", 
    primaryjoin="UserArticle.user_id==User.id", 
    foreign_keys="User.id") 

예 캐서 데이드 규칙을 읽었지만 이해할 수 없습니다. http://docs.sqlalchemy.org/en/latest/orm/session.html#cascades

어떻게 그 레코드를 삭제할 수 있습니까?

답변

1

계단식 규칙은 삭제로 고아가 된 레코드도 삭제해야 함을 의미합니다.

UserArticle을 삭제하면 사용자가 (프로그램의 관점에서) 더 이상 존재할 이유가 없습니다. 이것은 데이터베이스 모델에 문제가있는 것처럼 보입니다. 나는 사용자 및 기사는 각각 "사용자"와 "기사"테이블에 매핑되는이 코드에 있으리라 믿고있어

class UserArticle(db.Model): 
    id = db.Column(db.Integer, primary_key=True, auto_increment=True) 
    user_id = db.Column(db.Integer, db.ForeignKey('users.id')) 
    article_id = db.Column(db.Integer, db.ForeignKey('articles.id')) 

    creator = db.relationship("User", backref="UserArticle", primaryjoin=(user == User.id)) 

는 ... 사용하여 모델을 정의하십시오.

+0

Heyyy that worked. 친구 야 고마워. 나는 틀린 장소를보고 있었다. – cbron

관련 문제