"Christopher J. Bottaro" <[EMAIL PROTECTED]> schrieb im Newsbeitrag news:[EMAIL PROTECTED] | Hi, | Why is there no support for explicit transactions in the DB API? I mean | like transaction() to start the trans and commit() and rollback() would end | the trans or something. | | The reason why I ask is because I wrote a daemon that interacts with a | Postgres DB. The value of CURRENT_TIMESTAMP according to Postgres is NOT | the actual walltime, but the walltime when the current transaction started. | | This gets weird when using the Python DB API to interact with Postgres | because a transaction gets started in 3 places: connection, commit, | rollback. | | So consider the daemon: | | [pseudo code] | connect # begin trans at 12:00 | sleep waiting # lets say 15 mins | wake up | put entry in db using CURRENT_TIMESTAMP # oops | [/code] | | Oops, the CURRENT_TIMESTAMP evaluates to 12:00, not 12:15. | | Now I know there are ways around this... | 1) In Postgres, you can get the walltime and cast it to a timestamp. | 2) In Python, you can just do an empty commit in order to "manually" start | a new transaction. | | I just think its a bit weird because this bit me in the butt for quite a | while and this didn't happen when doing the same thing in other langs. | | Anyone have any opinions on this?
The described behavior seems to be totally in synch with expectations (both in accordance with PostgreSQL docs and the DB-API.) These "other languages" *must* be doing something wrong! ;) ( Auto-commit set to "on" perhaps? ) Regards, - Vincent Wehren | -- http://mail.python.org/mailman/listinfo/python-list