python - 无法使用 delete() 从数据库中删除对象
问题描述
根据文档,应该有一个 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)
主文件
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:类型对象“类别”没有属性“删除”
解决方案
感谢您的回答,我发现了错误并修复了它,我改变了创建模型的方式。我使用了文档中的“经典映射”,现在正在删除作品:)
模型.py
from sqlalchemy import BigInteger, Column, DateTime, ForeignKey, Integer, Numeric, String, Text, text, Table
from sqlalchemy.orm import relationship, mapper
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
metadata = Base.metadata
category = Table('category', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(200)),
Column('parentid', Integer),
)
class Category(object):
def __init__(self, cat_id, name, parentid):
self.id = cat_id
self.name = name
self.parentid = parentid
mapper(Category, category)
主文件
def crud_delete_single_cat(db: Session, cat_id: int) -> bool:
# records = db.query(models.Category).all()
stm = models.category.delete().where(models.category.c.id == cat_id)
print(stm)
results = db.execute(stm)
db.commit()
# result_set = db.execute("SELECT id, name, parentid FROM public.category;")
# rint(type(result_set))
# for r in result_set:
# print(r)
# return [{column: value for column, value in rowproxy.items()} for rowproxy in result_set]
# return await databasehelper.database.fetch_all(query)
return True
@router.delete("/category/{cat_id}", tags=["category"])
def read_item(cat_id: int, db: Session = Depends(get_db)):
deleted = crud_delete_single_cat(db, cat_id)
return {"cat_deleted": deleted}
推荐阅读
- python - 如何计算可靠性图的置信度?
- android - 我正在制作一个全语言翻译 android 应用程序并使用可搜索的微调器来显示用户语言。现在我还想用 lan 展示国家形象
- python - 如何处理 Django API 框架 POST 的外键和多个错误?
- web-application-security - 从安全角度来看,从查看页面源代码访问网站头部部分的链接(例如:js 和 css)是否可以接受
- javascript - React-split-pane:左窗格始终从页面左边距开始
- gmp - 如何处理大型 mpz_t 数组?
- c++ - 为什么将字符串添加到结构会导致崩溃(mallocing 时)
- php - 从 HTML 内容创建 pdf 文件 - 无法获取图像的大小
- excel - 如何在excel中选择统计范围
- azure-devops-server-2020 - 我更新了一个不起作用的扩展程序,我该如何降级它?