if synchronize_session == 'fetch':
#TODO: use RETURNING when available
select_stmt = context.statement.with_only_columns(primary_table.primary_key)
- matched_rows = session.execute(select_stmt).fetchall()
+ matched_rows = session.execute(select_stmt, params=self._params).fetchall()
if self._autoflush:
session._autoflush()
- result = session.execute(delete_stmt)
+ result = session.execute(delete_stmt, params=self._params)
if synchronize_session == 'evaluate':
target_cls = self._mapper_zero().class_
if synchronize_session == 'expire':
select_stmt = context.statement.with_only_columns(primary_table.primary_key)
- matched_rows = session.execute(select_stmt).fetchall()
+ matched_rows = session.execute(select_stmt, params=self._params).fetchall()
if self._autoflush:
session._autoflush()
- result = session.execute(update_stmt)
+ result = session.execute(update_stmt, params=self._params)
if synchronize_session == 'evaluate':
target_cls = self._mapper_zero().class_
assert john not in sess and jill not in sess
eq_(sess.query(User).order_by(User.id).all(), [jack,jane])
-
+
+ @testing.resolve_artifact_names
+ def test_delete_with_bindparams(self):
+ sess = create_session(bind=testing.db, autocommit=False)
+
+ john,jack,jill,jane = sess.query(User).order_by(User.id).all()
+ sess.query(User).filter('name = :name').params(name='john').delete()
+ assert john not in sess
+
+ eq_(sess.query(User).order_by(User.id).all(), [jack,jill,jane])
+
@testing.resolve_artifact_names
def test_delete_rollback(self):
sess = sessionmaker()()
eq_([john.age, jack.age, jill.age, jane.age], [25,37,29,27])
eq_(sess.query(User.age).order_by(User.id).all(), zip([25,37,29,27]))
+ @testing.resolve_artifact_names
+ def test_update_with_bindparams(self):
+ sess = create_session(bind=testing.db, autocommit=False)
+
+ john,jack,jill,jane = sess.query(User).order_by(User.id).all()
+
+ sess.query(User).filter('age > :x').params(x=29).update({'age': User.age - 10}, synchronize_session='evaluate')
+
+ eq_([john.age, jack.age, jill.age, jane.age], [25,37,29,27])
+ eq_(sess.query(User.age).order_by(User.id).all(), zip([25,37,29,27]))
+
@testing.resolve_artifact_names
def test_update_changes_resets_dirty(self):
sess = create_session(bind=testing.db, autocommit=False, autoflush=False)