Найти - Пользователи
Полная версия: sqlalchemy и сессии
Начало » Python для новичков » sqlalchemy и сессии
1
Bdfy1
Есть такой скрипт:

#!/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)
А вот как дальше “привязать” этот апдейт к сессии ?
bw
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()
autocommit лучше делать True.
Model лучше назвать model.
Уделяй больше времени оформлению кода.

p.s. “Пишите код, исходя из того, что программисты, которые будут сопровождать вашу программу, — склонные к насилию психопаты, знающие, где вы живёте.” – Анонимус

p.p.s. Вообще-то, в твоём случае сессия необязательна. Можно использовать просто соединения.

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB