session = self.engine.createSession()
for each_product in session.query(Product):
print 'deleted %s' % each_product.name
session.delete(each_product)
session.commit()
session = self.engine.createSession()
for each_product in session.query(Product):
print 'deleted %s' % each_product.name
new_product = Product(each_product.name, each_product.category, each_product.fat, each_product.protein, each_product.carbo)
session.delete(new_product)
session.commit()
File “sqlalchemy_test.py”, line 54, in deleteProduct
session.delete(new_product)
File “/var/lib/python-support/python2.5/sqlalchemy/orm/session.py”, line 954, in delete
self._delete_impl(instance)
File “/var/lib/python-support/python2.5/sqlalchemy/orm/session.py”, line 1121, in _delete_impl
raise exceptions.InvalidRequestError(“Instance ‘%s’ is not persisted” % mapperutil.instance_str(instance))
sqlalchemy.exceptions.InvalidRequestError: Instance ‘Product@0x9f6a22c’ is not persisted
Вопрос собственно прав ли я и какой в этом глубокий смысл?
Ну и как правильно выходить из этой ситуации? У меня есть gui - treeview, где в каждой строке у меня хранится информация достаточная для того, чтобы полностью создать объект для удаления (через new). Получается, что я должен не создавать объект сам, а заново вычитывать его из базы данных с помощью sqlAlchemy?