To make this script run, I had to remove "from smisk.config" since I don't have 
access to that, and also replace "get_db_url()" with a plain SQLite URL.   The 
script also doesn't include any data so I added a row that matches the 
particular delete you're doing.

The line that redefines the elixir session doesn't appear to work properly 
(keep in mind I don't work with Elixir), as Elixir seems to grab onto 
elixir.session separately before you change it's definition here.    The 
scoped_session() being made here doesn't appear to be used, so I changed it to:

elixir.session().autoflush=False
metadata.bind = create_engine("sqlite://", echo=True)
metadata.bind.recycle = 14400  # not sure what this is for, there's no 
"recycle" param on engine
setup_all(True)

m1 = Media(id="someid", status="Deleted", project_id=u'pf2u32e')
elixir.session.commit()
elixir.session.close()

media = Media.query.filter(Media.status == 
u'Deleted').filter_by(project_id=u'pf2u32e').all()

for m in media:
    m.delete()

session.commit()


the output is then what's expected, starting after the table creates, below.    
Can you modify the attached script and ensure it reproduces your error ?  This 
is SQLAlchemy 0.7.5.

2012-02-27 09:47:00,092 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2012-02-27 09:47:00,093 INFO sqlalchemy.engine.base.Engine INSERT INTO media 
(id, project_id, status, row_type) VALUES (?, ?, ?, ?)
2012-02-27 09:47:00,093 INFO sqlalchemy.engine.base.Engine ('someid', 
u'pf2u32e', 'Deleted', 'media')
2012-02-27 09:47:00,093 INFO sqlalchemy.engine.base.Engine COMMIT
2012-02-27 09:47:00,094 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2012-02-27 09:47:00,094 INFO sqlalchemy.engine.base.Engine SELECT media.id AS 
media_id, media.project_id AS media_project_id, media.status AS media_status, 
media.row_type AS media_row_type 
FROM media 
WHERE media.status = ? AND media.project_id = ?
2012-02-27 09:47:00,094 INFO sqlalchemy.engine.base.Engine (u'Deleted', 
u'pf2u32e')
2012-02-27 09:47:00,097 INFO sqlalchemy.engine.base.Engine SELECT 
media_variants.id AS media_variants_id, media_variants.original_id AS 
media_variants_original_id, media_variants.row_type AS media_variants_row_type 
FROM media_variants 
WHERE media_variants.original_id = ?
2012-02-27 09:47:00,097 INFO sqlalchemy.engine.base.Engine (u'someid',)
2012-02-27 09:47:00,098 INFO sqlalchemy.engine.base.Engine SELECT 
media_attributes.media_id AS media_attributes_media_id, 
media_attributes.attr_key AS media_attributes_attr_key, 
media_attributes.attr_value AS media_attributes_attr_value 
FROM media_attributes 
WHERE media_attributes.media_id = ?
2012-02-27 09:47:00,098 INFO sqlalchemy.engine.base.Engine (u'someid',)
2012-02-27 09:47:00,099 INFO sqlalchemy.engine.base.Engine DELETE FROM media 
WHERE media.id = ?
2012-02-27 09:47:00,099 INFO sqlalchemy.engine.base.Engine (u'someid',)
2012-02-27 09:47:00,099 INFO sqlalchemy.engine.base.Engine COMMIT




On Feb 27, 2012, at 8:07 AM, Jakob D. wrote:

> Sure, I thought that might be something obvious.
> 
> Here's runnable test which gives the above error:
> 
> import elixir
> from elixir import *
> from elixir.events import *
> from sqlalchemy.orm import scoped_session, sessionmaker
> from smisk.config import config
> 
> class Project(Entity):
>       using_options(tablename='projects')     
>       id                  = Field(String(100), primary_key=True)
>       media              = OneToMany('Media', cascade='all, delete')
> 
> class Media(Entity):
>       using_options(tablename='media', inheritance='multi')
>       id                              = Field(String(50), primary_key=True)
>       project                 = ManyToOne('Project')
>       variants        = OneToMany('MediaVariant', cascade='all, delete')
>       attributes      = OneToMany('MediaAttribute', cascade='all, delete')
>       status                  = Field(String(20), nullable=True)
> 
> class MediaAttribute(Entity):
>       using_options(tablename='media_attributes')
>       media            = ManyToOne('Media', primary_key=True)
>       attr_key         = Field(String(100), primary_key=True)
>       attr_value       = Field(Unicode(255))  
> 
> class MediaVariant(Entity):
>       using_options(tablename='media_variants', inheritance='multi')
>       id         = Field(Integer, primary_key=True, autoincrement=True)
>       original   = ManyToOne('Media')
> 
> class Image(Media):
>       using_options(tablename='images', inheritance='multi')
>       width   = Field(Integer, nullable=False, default=0)
>       height  = Field(Integer, nullable=False, default=0)
>               
> class ImageVariant(MediaVariant):
>       using_options(tablename='image_variants', inheritance='multi')
>       width   = Field(Integer, nullable=False, default=0)
>       height  = Field(Integer, nullable=False, default=0)
>       
> elixir.session = scoped_session(sessionmaker(autoflush=False, 
> transactional=True))
> metadata.bind = get_db_url()
> metadata.bind.recycle = 14400
> setup_all(True)
> 
> media = Media.query.filter(Media.status == 
> u'Deleted').filter_by(project_id=u'pf2u32e').all()
> 
> for m in media:
>       m.delete()
>       
> elixir.session.commit()
> 
> 
> 
> On Friday, 24 February 2012 22:04:22 UTC+1, Michael Bayer wrote:
> 
> On Feb 24, 2012, at 12:37 PM, Jakob D. wrote:
> > I wrote a small script to clean up the db of old entries. 
> > 
> > So when I do obj.delete() I get this error. I also do a session.update(obj) 
> > right before to make sure the object is present in the session. 
> > 
> >   File "deletor.py", line 95, in delete
> >     m.delete()
> >   File "/usr/lib/python2.5/site-packages/elixir/entity.py", line 963, in 
> > delete
> >     return object_session(self).delete(self, *args, **kwargs)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/session.py", line 
> > 961, in delete
> >     for c, m in _cascade_iterator('delete', instance):
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/session.py", line 
> > 1253, in _cascade_iterator
> >     for (o, m) in mapper.cascade_iterator(cascade, instance._state, 
> > **kwargs):
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 
> > 1335, in cascade_iterator
> >     instance, instance_mapper, corresponding_state  = iterator.next()
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/properties.py", 
> > line 451, in cascade_iterator
> >     instances = attributes.get_as_list(state, self.key, passive=passive)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/attributes.py", 
> > line 1151, in get_as_list
> >     x = attr.get(state, passive=passive)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/attributes.py", 
> > line 279, in get
> >     value = callable_()
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/strategies.py", 
> > line 466, in __call__
> >     result = q.all()
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 
> > 878, in all
> >     return list(self)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 
> > 1017, in iterate_instances
> >     context.attributes.get(('populating_mapper', ii), 
> > _state_mapper(ii))._post_instance(context, ii)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 
> > 1517, in _post_instance
> >     p(state.obj(), **kwargs)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 
> > 1547, in post_execute
> >     self.populate_instance(selectcontext, instance, row, isnew=False, 
> > instancekey=identitykey, ispostselect=True, only_load_props=only_load_props)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 
> > 1484, in populate_instance
> >     (newpop, existingpop, post_proc) = selectcontext.exec_with_path(self, 
> > prop.key, prop.create_row_processor, selectcontext, self, row)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 
> > 1703, in exec_with_path
> >     return fn(*args, **kwargs)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/interfaces.py", 
> > line 532, in create_row_processor
> >     return 
> > self._get_context_strategy(selectcontext).create_row_processor(selectcontext,
> >  mapper, row)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/strategies.py", 
> > line 75, in create_row_processor
> >     elif self.columns[0] in row:
> > TypeError: argument of type 'NoneType' is not iterable
> > 
> > 
> > Can I get a hint to what might be wrong?
> 
> 
> I can give you a hint if you give us one .... a short, self-contained and 
> runnable test script illustrating how you're getting it to do this ?
> 
> 
> 
> 
> 
> 
> On Friday, 24 February 2012 22:04:22 UTC+1, Michael Bayer wrote:
> 
> On Feb 24, 2012, at 12:37 PM, Jakob D. wrote:
> > I wrote a small script to clean up the db of old entries. 
> > 
> > So when I do obj.delete() I get this error. I also do a session.update(obj) 
> > right before to make sure the object is present in the session. 
> > 
> >   File "deletor.py", line 95, in delete
> >     m.delete()
> >   File "/usr/lib/python2.5/site-packages/elixir/entity.py", line 963, in 
> > delete
> >     return object_session(self).delete(self, *args, **kwargs)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/session.py", line 
> > 961, in delete
> >     for c, m in _cascade_iterator('delete', instance):
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/session.py", line 
> > 1253, in _cascade_iterator
> >     for (o, m) in mapper.cascade_iterator(cascade, instance._state, 
> > **kwargs):
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 
> > 1335, in cascade_iterator
> >     instance, instance_mapper, corresponding_state  = iterator.next()
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/properties.py", 
> > line 451, in cascade_iterator
> >     instances = attributes.get_as_list(state, self.key, passive=passive)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/attributes.py", 
> > line 1151, in get_as_list
> >     x = attr.get(state, passive=passive)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/attributes.py", 
> > line 279, in get
> >     value = callable_()
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/strategies.py", 
> > line 466, in __call__
> >     result = q.all()
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 
> > 878, in all
> >     return list(self)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 
> > 1017, in iterate_instances
> >     context.attributes.get(('populating_mapper', ii), 
> > _state_mapper(ii))._post_instance(context, ii)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 
> > 1517, in _post_instance
> >     p(state.obj(), **kwargs)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 
> > 1547, in post_execute
> >     self.populate_instance(selectcontext, instance, row, isnew=False, 
> > instancekey=identitykey, ispostselect=True, only_load_props=only_load_props)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 
> > 1484, in populate_instance
> >     (newpop, existingpop, post_proc) = selectcontext.exec_with_path(self, 
> > prop.key, prop.create_row_processor, selectcontext, self, row)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 
> > 1703, in exec_with_path
> >     return fn(*args, **kwargs)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/interfaces.py", 
> > line 532, in create_row_processor
> >     return 
> > self._get_context_strategy(selectcontext).create_row_processor(selectcontext,
> >  mapper, row)
> >   File "/var/lib/python-support/python2.5/sqlalchemy/orm/strategies.py", 
> > line 75, in create_row_processor
> >     elif self.columns[0] in row:
> > TypeError: argument of type 'NoneType' is not iterable
> > 
> > 
> > Can I get a hint to what might be wrong?
> 
> 
> I can give you a hint if you give us one .... a short, self-contained and 
> runnable test script illustrating how you're getting it to do this ?
> 
> 
> 
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To view this discussion on the web visit 
> https://groups.google.com/d/msg/sqlalchemy/-/yBNZuGed_h8J.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> To unsubscribe from this group, send email to 
> sqlalchemy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.



On Feb 27, 2012, at 8:07 AM, Jakob D. wrote:

Sure, I thought that might be something obvious.

Here's runnable test which gives the above error:

import elixir
from elixir import *
from elixir.events import *
from sqlalchemy.orm import scoped_session, sessionmaker
from smisk.config import config

class Project(Entity):
using_options(tablename='projects')
id                  = Field(String(100), primary_key=True)
media              = OneToMany('Media', cascade='all, delete')

class Media(Entity):
using_options(tablename='media', inheritance='multi')
id = Field(String(50), primary_key=True)
project = ManyToOne('Project')
variants        = OneToMany('MediaVariant', cascade='all, delete')
attributes      = OneToMany('MediaAttribute', cascade='all, delete')
status = Field(String(20), nullable=True)

class MediaAttribute(Entity):
using_options(tablename='media_attributes')
media = ManyToOne('Media', primary_key=True)
attr_key = Field(String(100), primary_key=True)
attr_value = Field(Unicode(255))

class MediaVariant(Entity):
using_options(tablename='media_variants', inheritance='multi')
id         = Field(Integer, primary_key=True, autoincrement=True)
original   = ManyToOne('Media')

class Image(Media):
using_options(tablename='images', inheritance='multi')
width = Field(Integer, nullable=False, default=0)
height = Field(Integer, nullable=False, default=0)
class ImageVariant(MediaVariant):
using_options(tablename='image_variants', inheritance='multi')
width = Field(Integer, nullable=False, default=0)
height = Field(Integer, nullable=False, default=0)
elixir.session = scoped_session(sessionmaker(autoflush=False, transactional=True))
metadata.bind = get_db_url()
metadata.bind.recycle = 14400
setup_all(True)

media = Media.query.filter(Media.status == u'Deleted').filter_by(project_id=u'pf2u32e').all()

for m in media:
m.delete()
elixir.session.commit()



On Friday, 24 February 2012 22:04:22 UTC+1, Michael Bayer wrote:

On Feb 24, 2012, at 12:37 PM, Jakob D. wrote:

> I wrote a small script to clean up the db of old entries.
>
> So when I do obj.delete() I get this error. I also do a session.update(obj) right before to make sure the object is present in the session.
>
>   File "deletor.py", line 95, in delete
>     m.delete()
>   File "/usr/lib/python2.5/site-packages/elixir/entity.py", line 963, in delete
>     return object_session(self).delete(self, *args, **kwargs)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/session.py", line 961, in delete
>     for c, m in _cascade_iterator('delete', instance):
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/session.py", line 1253, in _cascade_iterator
>     for (o, m) in mapper.cascade_iterator(cascade, instance._state, **kwargs):
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 1335, in cascade_iterator
>     instance, instance_mapper, corresponding_state  = iterator.next()
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/properties.py", line 451, in cascade_iterator
>     instances = attributes.get_as_list(state, self.key, passive=passive)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/attributes.py", line 1151, in get_as_list
>     x = attr.get(state, passive=passive)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/attributes.py", line 279, in get
>     value = callable_()
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/strategies.py", line 466, in __call__
>     result = q.all()
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 878, in all
>     return list(self)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 1017, in iterate_instances
>     context.attributes.get(('populating_mapper', ii), _state_mapper(ii))._post_instance(context, ii)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 1517, in _post_instance
>     p(state.obj(), **kwargs)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 1547, in post_execute
>     self.populate_instance(selectcontext, instance, row, isnew=False, instancekey=identitykey, ispostselect=True, _only_load_props_=only_load_props)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 1484, in populate_instance
>     (newpop, existingpop, post_proc) = selectcontext.exec_with_path(self, prop.key, prop.create_row_processor, selectcontext, self, row)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 1703, in exec_with_path
>     return fn(*args, **kwargs)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/interfaces.py", line 532, in create_row_processor
>     return self._get_context_strategy(selectcontext).create_row_processor(selectcontext, mapper, row)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/strategies.py", line 75, in create_row_processor
>     elif self.columns[0] in row:
> TypeError: argument of type 'NoneType' is not iterable
>
>
> Can I get a hint to what might be wrong?


I can give you a hint if you give us one .... a short, self-contained and runnable test script illustrating how you're getting it to do this ?





On Friday, 24 February 2012 22:04:22 UTC+1, Michael Bayer wrote:

On Feb 24, 2012, at 12:37 PM, Jakob D. wrote:

> I wrote a small script to clean up the db of old entries.
>
> So when I do obj.delete() I get this error. I also do a session.update(obj) right before to make sure the object is present in the session.
>
>   File "deletor.py", line 95, in delete
>     m.delete()
>   File "/usr/lib/python2.5/site-packages/elixir/entity.py", line 963, in delete
>     return object_session(self).delete(self, *args, **kwargs)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/session.py", line 961, in delete
>     for c, m in _cascade_iterator('delete', instance):
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/session.py", line 1253, in _cascade_iterator
>     for (o, m) in mapper.cascade_iterator(cascade, instance._state, **kwargs):
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 1335, in cascade_iterator
>     instance, instance_mapper, corresponding_state  = iterator.next()
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/properties.py", line 451, in cascade_iterator
>     instances = attributes.get_as_list(state, self.key, passive=passive)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/attributes.py", line 1151, in get_as_list
>     x = attr.get(state, passive=passive)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/attributes.py", line 279, in get
>     value = callable_()
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/strategies.py", line 466, in __call__
>     result = q.all()
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 878, in all
>     return list(self)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 1017, in iterate_instances
>     context.attributes.get(('populating_mapper', ii), _state_mapper(ii))._post_instance(context, ii)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 1517, in _post_instance
>     p(state.obj(), **kwargs)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 1547, in post_execute
>     self.populate_instance(selectcontext, instance, row, isnew=False, instancekey=identitykey, ispostselect=True, _only_load_props_=only_load_props)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/mapper.py", line 1484, in populate_instance
>     (newpop, existingpop, post_proc) = selectcontext.exec_with_path(self, prop.key, prop.create_row_processor, selectcontext, self, row)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/query.py", line 1703, in exec_with_path
>     return fn(*args, **kwargs)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/interfaces.py", line 532, in create_row_processor
>     return self._get_context_strategy(selectcontext).create_row_processor(selectcontext, mapper, row)
>   File "/var/lib/python-support/python2.5/sqlalchemy/orm/strategies.py", line 75, in create_row_processor
>     elif self.columns[0] in row:
> TypeError: argument of type 'NoneType' is not iterable
>
>
> Can I get a hint to what might be wrong?


I can give you a hint if you give us one .... a short, self-contained and runnable test script illustrating how you're getting it to do this ?





--
You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/yBNZuGed_h8J.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.

import elixir
from elixir import *
from elixir.events import *
from sqlalchemy.orm import scoped_session, sessionmaker, Session
from sqlalchemy import create_engine

class Project(Entity):
	using_options(tablename='projects')	
	id                  = Field(String(100), primary_key=True)
	media              = OneToMany('Media', cascade='all, delete')

class Media(Entity):
	using_options(tablename='media', inheritance='multi')
	id				= Field(String(50), primary_key=True)
	project			= ManyToOne('Project')
	variants        = OneToMany('MediaVariant', cascade='all, delete')
	attributes      = OneToMany('MediaAttribute', cascade='all, delete')
	status			= Field(String(20), nullable=True)

class MediaAttribute(Entity):
	using_options(tablename='media_attributes')
	media		 = ManyToOne('Media', primary_key=True)
	attr_key	 = Field(String(100), primary_key=True)
	attr_value	 = Field(Unicode(255))	

class MediaVariant(Entity):
	using_options(tablename='media_variants', inheritance='multi')
	id         = Field(Integer, primary_key=True, autoincrement=True)
	original   = ManyToOne('Media')

class Image(Media):
	using_options(tablename='images', inheritance='multi')
	width	= Field(Integer, nullable=False, default=0)
	height	= Field(Integer, nullable=False, default=0)

class ImageVariant(MediaVariant):
	using_options(tablename='image_variants', inheritance='multi')
	width	= Field(Integer, nullable=False, default=0)
	height	= Field(Integer, nullable=False, default=0)
	
elixir.session().autoflush=False
metadata.bind = create_engine("sqlite://", echo=True)
metadata.bind.recycle = 14400
setup_all(True)

m1 = Media(id="someid", status="Deleted", project_id=u'pf2u32e')
elixir.session.commit()
elixir.session.close()

media = Media.query.filter(Media.status == u'Deleted').filter_by(project_id=u'pf2u32e').all()

for m in media:
    m.delete()

session.commit()

Reply via email to