-- Dhruv Baldawa (http://www.dhruvb.com)
On Tue, Feb 12, 2013 at 7:13 AM, Sriram Karra <karra....@gmail.com> wrote: > On Wed, Feb 6, 2013 at 12:05 PM, Dhruv Baldawa <dhruvbald...@gmail.com > >wrote: > > > OK I misread. Let me see if I understood your problem correctly. > > > > 1. All the consultations will be stored in that table. > > 2. When you have a Consultation object, you need a > `consultation_count` > > property for the number of consultation for that day. > > > > So, this should work now, according to me: > > > > def generate_consultation_id(date): > > return Consultation.query.filter_by(data=data).count() + 1 > > > > > I assume you meant 'date=date' in the method body. > Yes, sorry for the typo. > > > > class Consultation(Base): > > ... > > cid = Column(Integer, default=generate_consultation_id) > > > > This should work, according to me. The function is called while adding > the > > id to the database. > > > Thanks a lot. It does appear to work. Just a clarification - I have two > sessions initialized - one for a demo database and one for a production > database and allow the users to switch between the two (for staff training, > or feature exploration purposes). I tested it briefly and the counts are > correctly incremented for whichever session is currently active. Just > wanted to confirm that behaviour will be consistent. > Yes, this will be consistent. Just to explain in brief how it works. The default function gets executed in runtime, when a new record is created, it just go throughs the database, finds the number of records for that particular date and increments it by one and returns it. As long as the same procedure is followed, it would be consistent, but if someone specifies the value explicitly, it might create a problem. Also, I have found a bug which can be solved using context-based default functions<http://docs.sqlalchemy.org/en/rel_0_7/core/schema.html#context-sensitive-default-functions> def generate_consultation_id(context): return Consultation.query.filter_by(date=context.current_parameters['date']).count() + 1 > _______________________________________________ > BangPypers mailing list > BangPypers@python.org > http://mail.python.org/mailman/listinfo/bangpypers > _______________________________________________ BangPypers mailing list BangPypers@python.org http://mail.python.org/mailman/listinfo/bangpypers