【问题标题】:how to delete a specific row from a table sqlalchemy with flask?如何使用烧瓶从表 sqlalchemy 中删除特定行?
【发布时间】:2021-02-17 14:41:42
【问题描述】:

我想删除 db.table 中的特定行 我有这些代码

num_rows_deleted=db.session.query(Orders).filter(Orders.c.id==id).first()
db.session.delete(num_rows_deleted)
db.session.commit()

Orders = db.Table('orders', db.Model.metadata,
            db.Column('id', db.Integer,primary_key=True),
              db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
              db.Column('book_id', db.Integer, db.ForeignKey('books.id')),
              db.Column('quantity', db.Integer,default=1, nullable=False),
              db.Column('created_at',db.DateTime, default=datetime.datetime.now),
            db.Column('updated_at',db.DateTime, onupdate=datetime.datetime.now))

这是桌子

但我收到这些错误,我不知道如何解决它 sqlalchemy.orm.exc.UnmappedInstanceError:类 'sqlalchemy.util._collections.result' 未映射

【问题讨论】:

  • 嗨 Wael,请在您的 python 终端中向我们展示输出,这将有助于人们识别问题。此外,编写一个玩具问题来显示您的问题有助于更快地解决问题。
  • 嗨,这是我得到的错误 sqlalchemy.orm.exc.UnmappedInstanceError: Class 'sqlalchemy.util._collections.result' is not mapped
  • 这能回答你的问题吗? How to delete a record by id in Flask-SQLAlchemy

标签: python sqlalchemy


【解决方案1】:

尝试以下操作,不要获取值,而是立即删除它,使用Query.delete

db.session.query(Orders).filter(Orders.c.id==id).delete()
db.session.commit()

【讨论】:

  • 谢谢你的回答,我遇到了同样的问题 AttributeError: 'NoneType' object has no attribute 'class_'
  • id 的值是多少?是数字还是别的什么?
  • 是的,它是一个数字——它是订单表的主键。这些来自views.py的整个函数 @app.route('/delete_order/',methods=["GET", "POST"]) @flask_login.login_required def delete_order(id): row_to_delete = db .session.query(Orders).filter(Orders.c.id == id).delete() db.session.delete(row_to_delete) db.session.commit()
  • 删除db.session.delete(row_to_delete) 部分,只保留我写的内容
  • 还是一样的 AttributeError: 'NoneType' object has no attribute 'class_'
【解决方案2】:

你可以试试这个

row_to_delete = db.session.query(Orders).filter(Orders.id==id).one()
db.session.delete(row_to_delete)
db.session.commit()

【讨论】:

  • 我尝试使用这些代码,但我得到 AttributeError: 'Table' object has no attribute 'id'
【解决方案3】:

谢谢大家 - 我使用了从多对多表中删除行¶ 来自这些网站https://docs.sqlalchemy.org/en/13/orm/basic_relationships.html

我的表是一个次要表,它连接到两个表,所以我使用删除删除,附加添加。

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多