Python代码不从数据库中删除记录

时间:2015-12-09 05:05:46

标签: python mysql sql database

这是我必须从我的数据库中的两个表中删除共享相同ID代码的记录的代码,我不太确定我哪里出错了。有什么遗失?我已经检查了一百万次

def deletePhoto(photoID):

    """
    Middleware function to delete a photo post
    """

    #connect to the database
    conn, cursor = getConnectionAndCursor()

    #create sql to delete from the ratings table
    sql = """
    DELETE
    FROM ratings
    WHERE photoID= %s
    """

    #set the parameters
    parameters = (photoID)

    #execute the sql
    cursor.execute(sql, parameters)

    #create sql to delete from the photo table
    sql = """
    DELETE
    FROM photo
    WHERE photoID = %s
    """

    #set the parameters
    parameters = (photoID)

    #execute the sql
    cursor.execute(sql, parameters)

    #fetch the data
    data = cursor.rowcount

    #clean up
    conn.commit()
    cursor.close()
    conn.close()

2 个答案:

答案 0 :(得分:0)

您可以尝试在执行后添加一个睡眠者。 服务器可能需要一些时间来处理您的查询。

import time
time.sleep(x) 

以秒为单位

答案 1 :(得分:0)

您需要为第二个参数传入序列。使用仅括号不会创建序列。最重要的是,如果var result = GenerateCombinations(new List<int>() { 1, 2, 3 }, 2); foreach (var comb in result) Console.WriteLine(string.Join(",", comb)); 1,2 1,3 2,3 那么序列也是,那个由单个字符组成。

要创建元组,您需要使用逗号。括号在这里是可选的:

photoID

parameters = photoID,

如果你发现在这里更容易避免错误,你也可以把它列为一个列表:

parameters = (photoID,)

你只需要这样做一次。

作为旁注,您可以将MySQLdb连接对象以及游标用作上下文管理器

parameters = [photoID]

with connection, cursor: ratings_delete = """ DELETE FROM ratings WHERE photoID= %s """ cursor.execute(ratings_delete, (photoID,)) photo_delete = """ DELETE FROM photo WHERE photoID = %s """ cursor.execute(photo_delete, (photoID,)) 语句将为您关闭光标和连接,如果块中没有出错(没有引发异常),也会为您提交事务。