2013-01-15 3 views
0

sqlalachemy를 실행하는 Flask 응용 프로그램이 있습니다. 나는 꽤 sqlalchemy에 익숙하지 않기 때문에 나는 정말로 혼란 스럽다. 자산sqlalchemy : 클래스의 새 인스턴스를 만드는 방법은 무엇입니까?

사용자가 많은 강의, 강연이, relationships- 사용자 과정은 많은 사용자가 많은 코스를 가지고 모두

사용자 코스 강의 주 큐 : 나는 클래스의 무리를했습니다 강좌에는 많은 노트가 있고 강좌에는 많은 노트가 있으며 강좌에는 1 대 1의 대기열이 있고 사용자는 많은 대기열을 가질 수 있으며 대기열에는 많은 사용자가 필요합니다. 등등

그래서 내가 강의를 만들 때마다 그것과 관련된 다른 모든 일들에서 그것을 조장 하는가?

는 예를 들어, 내가이 날 같은 터무니없이 복잡하고 혼란 파업 새로운 강의

def createLecture(user, course): 
    # user and course are existing objects fetched from the db already 
    # create new lecture 
    newLecture = Lecture() 
    db.session.add(newLecture) 

    # add lecture to course, add new queue to lecture, add user to queue, add user to lecture 
    course.lectures.append(newLecture) 
    lecture.users.append(user) 
    newQueue = Queue() 
    db.session.add(newQueue) 
    newQueue.users.append(user) 
    newQueue.lecture = newLecture 
    db.session.commit() 

    return newLecture 

을 만들기 위해 작성한 코드입니다. 혼란 스러울뿐만 아니라, 나는 내가 만들어야 만하는 모든 관계 (너무 많은 것을 잊어 버리기는 쉽다)를 다 커버했는지조차 알지 못한다.

다양한 관계를 가진 많은 다른 객체에 묶여있을 때 새로운 객체를 추가하는 것이 더 나은 방법이어야합니다.

어떻게 체계적으로 구성 할 수 있습니까?

답변

0

이것은 복잡한 데이터베이스 스키마이므로 모든 관계를 두 번 확인하고 올바르게 지정했는지 확인했습니다.

내 스키마를 검토하면서 객체가으로 인스턴스화 될 때 이라는 일부 관계가 충족 될 수 있다고 생각했습니다. 이것이 코드 혼란을 줄이는 가장 좋은 방법입니다.

def createLecture(user, course): 
# create new lecture 
now = datetime.now() 
dt = now.strftime("%Y-%m-%d-%H-%M") 
newLecture = Lecture(dt, course) 
db.session.add(newLecture) 

# add lecture to course, add new queue to lecture, add user to queue, add new user to lecture 
newQueue = Queue(newLecture) 
db.session.add(newQueue) 
newLecture.users.append(user) 
newQueue.users.append(user) 
newLecture.groupID = pad.createGroupIfNotExistsFor(newLecture.course.name+dt)['groupID'] 

db.session.commit() 
return newLecture 
:

는 그래서 위에서 내 예는 다음과 같이 기록

관련 문제