GAE, Cloud SQL и run_in_transaction

Я использую GAE с Cloud SQL.

Кажется, я не вижу, чтобы это упоминалось в документации, поэтому я подумал, что попрошу просто уточнить мое понимание.

Является стандартным методом группировки транзакций, т.е.:

def do_something_in_transaction(...)
  update my CloudSQL database record
  taskqueue.add(url='/path/to/my/worker', transactional=True)
  ...

db.run_in_transaction(do_something_in_transaction, ....)

Предполагается, что он будет работать для облачного SQL?

Также могу ли я также обновлять/вставлять/удалять несколько записей (т.е. столько, сколько мне нужно) во время вызова run_in_transaction?

i.e:

def do_something_in_transaction(...)
   x_id = insert record into table x
   update table y record with x_id
   insert record into table a
   insert record into table b
   … etc
  taskqueue.add(url='/path/to/my/worker', transactional=True)

Заранее спасибо, Мэтт


person Sway    schedule 13.11.2012    source источник


Ответы (1)


Учитывая, что это часть компонента базы данных, я думаю, что run_in_transaction относится к хранилищу данных.

Для CloudSQL используйте команды транзакции SQL START TRANSACTION, COMMIT, ROLLBACK.

person dragonx    schedule 14.11.2012
comment
Да, верно. Спасибо. Надеюсь, я получу ответ и от команды GAE. - person Sway; 15.11.2012