【发布时间】:2020-09-22 12:39:33
【问题描述】:
根据文档,应该有delete()方法(https://docs.sqlalchemy.org/en/13/core/tutorial.html#deletes),但是我的模型好像没有delete()方法,我做错了什么?
模型.py
>from sqlalchemy import BigInteger, Column, DateTime, ForeignKey, Integer, Numeric, String, Text, text
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
metadata = Base.metadata
class Category(Base):
__tablename__ = 'category'
id = Column('id', Integer, primary_key=True)
name = Column('name', String(200))
parentid = Column('parentid', Integer)
Main.py
> def crud_delete_single_cat(db: Session, cat_id: int) -> int:
query = models.Category.delete().where(models.Category.id == cat_id)
print(query)
results = db.query()
return results.rowcount
我尝试运行该方法时的错误消息:
AttributeError: type object 'Category' has no attribute 'delete'
【问题讨论】:
-
docs.sqlalchemy.org/en/13/core/tutorial.html#deletes 他们的例子是从类 sqlalchemy.Table 生成的对象。您正在使用不同的类,因此您正在查看错误的辅助文档或正在以没有
.delete()的不同方式实现它。 -
是
models.Category.__table__.delete().where(...),根据stackoverflow.com/a/39774354/683329 吗? -
使用 ORM 时,通过会话删除:
session.delete(model_instance)。
标签: python sqlalchemy fastapi