gpt4 book ai didi

python - 如何使用没有 ORM 的 SQLAlchemy 查询从表中删除行?

转载 作者:IT老高 更新时间:2023-10-28 22:02:44 27 4
gpt4 key购买 nike

我正在编写一个快速而肮脏的维护脚本来删除一些行,并希望避免将我的 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 时,我很陌生,我应该怎么做?

最佳答案

查看我做类似事情的一些代码,我相信这会做你想要的。

d = addresses_table.delete().where(addresses_table.c.retired == 1)
d.execute()

在表对象上调用 delete() 会为您提供一个 sql.expression (如果有内存的话),然后您可以执行它。我在上面假设该表绑定(bind)到一个连接,这意味着您可以在其上调用 execute() 。如果没有,您可以在连接上将 d 传递给 execute(d)

参见文档 here .

关于python - 如何使用没有 ORM 的 SQLAlchemy 查询从表中删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9882358/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com