Я пишу быстрый и грязный mainteace script для удаления некоторых строк и хотел бы избежать необходимости переносить классы/сопоставления ORM из основного проекта. У меня есть запрос, похожий на:
address_table = Table('address',metadata,autoload=True)
addresses = session.query(addresses_table).filter(addresses_table.c.retired == 1)
В соответствии со всем, что я прочитал, если я использовал ORM (не "только" таблицы) и передал что-то вроде:
addresses = session.query(Addresses).filter(addresses_table.c.retired == 1)
Я мог бы добавить .delete()
к запросу, но когда я попытаюсь сделать это, используя только таблицы, я получаю жалобу:
File "/usr/local/lib/python2.6/dist-packages/sqlalchemy/orm/query.py", line 2146, in delete
target_cls = self._mapper_zero().class_
AttributeError: 'NoneType' object has no attribute 'class_'
Это имеет смысл как его таблица, а не класс. Я очень зелёный, когда дело доходит до SQLAlchemy, как я должен это делать?