这是我必须从我的数据库中的两个表中删除共享相同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()
答案 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,))
语句将为您关闭光标和连接,如果块中没有出错(没有引发异常),也会为您提交事务。