在Python中更正用于多表删除的MySQL查询

时间:2017-08-30 18:45:10

标签: mysql python-2.7

希望能够从我页面上的链接中删除邮件及其相关评论。从搜索开始,我相信我可能需要在我的python代码中执行ON DELETE CASCADE?但是,我不太清楚如何去做?这是我试过的最后一个查询

@app.route('/messages/<id>/delete')
def delete_message(id):

    query = 'DELETE FROM messages WHERE id = :id AND comments WHERE id = :id'
    data = {'id':id}
    mysql.query_db(query,data)

    return redirect('/wall')

USERS
id
first_name
last_name
email
pw_hash

MESSAGES
id
messages
user_id

COMMENTS
id 
comments
message_id
user_id

有关如何写出来的任何建议吗?

1 个答案:

答案 0 :(得分:1)

您使用ON DELETE CASCADE的方式正确。但是,这不是您在Python代码中所做的事情,而是在设计数据库时的正确设置问题。 如果我们只关注您的表messagescomments,则comments表与消息具有外键关系,这意味着字段message_id链接到字段{{ 1}}。这不会自动发生,但在您的DB-Admintool(例如phpMyAdmin,HeidiSQL)中,您需要设置此外键。在此外键上,您可以将messages.id选项设置为ON DELETE,以便在删除邮件时删除您的注释。

然后你的查询

CASCADE

将删除包含该ID的邮件,并自动删除该邮件的所有评论。

我认为http://webdevzoom.com/create-edit-delete-foreign-key-phpmyadmin/可能有助于提供更多解释和说明。