Форум сайта python.su
Есть такой скрипт:
#!/usr/bin/python
from sqlalchemy import *
#from sqlalchemy.orm import create_session
engine = create_engine('postgres://test:test@test.ru/test')
engine.echo = False
#db = create_session(bind=engine, autocommit=False, autoflush=False)
metadata = MetaData(engine)
Model = Table('model', metadata, autoload=True )
update = Model.update().where('id=116401')
update.execute(name='test8')
Он апдейтит запись в таблице соотв. Нужно сделать так чтобы можно было дальше делать что-либо в транзакции ( те изменения не сразу комитились а по rollback/commit ) вручную. По идее это нужно “завернуть” в session ?
Т е
db = create_session(bind=engine, autocommit=False, autoflush=False)
А вот как дальше “привязать” этот апдейт к сессии ?
Офлайн
Session = create_session(bind = engine, autocommit = True, autoflush = False)
s = Session()
try:
# в твоем случае
s.execute(
model.update(model.c.id == 116401),
dict(name = 'test8'))
except:
s.rollback()
s.close()
raise
s.commit()
s.close()
Отредактировано (Янв. 28, 2010 17:41:42)
Офлайн