rendered paste bodyfrom elixir import *from sqlalchemy import *from sqlalchemy.exceptions import FlushErrorimport sysclass Member(Entity): has_field('gid', Integer) has_field('sid', Integer) using_table_options(PrimaryKeyConstraint('sid', 'gid')) class Times(Entity): has_field('time', Integer, primary_key=True)class Schedule(Entity): has_field('sid', Integer) has_field('busy_hour', Integer) #belongs_to('times', colname='busy_hour', of_kind='Times', required=True) using_table_options(PrimaryKeyConstraint('sid', 'busy_hour'), ForeignKeyConstraint(['busy_hour'], [Times.table.c.time]))def run(stmt): rs = stmt.execute() for row in rs: print row#print dir(Times.c)metadata.connect("sqlite:///schedules.sqlite")create_all()Times.table.delete().execute()Schedule.table.delete().execute()Member.table.delete().execute()for i in range(0, 24): Times(time=i)objectstore.flush()#print Times.select()#Schedule(sid=1,busy_hour=5)#objectstore.flush()a= select([Schedule.table.c.sid, Schedule.table.c.busy_hour])print run(a)print Times.table.c.timewhile(True): line = raw_input('> ') parts = line.split(' ') cmd = parts[0] if(cmd == 'when'): gid = parts[1]# 'select time from times left join schedule on '# 'times.time = schedule.busy_hour where busy_hour is null'# students_in_group = select([Group.table.c.sid], Group.table.c.gid == gid).select() grouptimes_j = join(Schedule.table, Member.table, and_(Schedule.table.c.sid == Member.table.c.sid, Member.table.c.gid == gid)).select() joined = outerjoin(Times.table, grouptimes_j, Times.table.c.time == grouptimes_j.c.busy_hour)# print joined.select() result = select([Times.table.c.time], joined.c.busy_hour == None, from_obj=[joined] ) result.distinct = True# print result run(result) elif(cmd == 'member'): try: gid = parts[1] sid = parts[2] Member(gid=gid, sid=sid) objectstore.flush() except FlushError: print 'duplicate entry already exists in database' objectstore.clear() elif(cmd == 'busy'): try: sid = parts[1] hour = parts[2] Schedule(sid=sid, busy_hour=hour) objectstore.flush() except FlushError: print 'duplicate entry already exists in database' objectstore.clear()# run(select([Schedule.table.c.sid, Schedule.table.c.busy_hour])) elif(cmd in ['quit', 'bye']): print 'bye' sys.exit()