我试图执行一条delete语句,检查表中是否有任何SKU存在于dataframe的SKU列中。如果是,则删除该行。由于我使用for语句遍历行并进行检查,因此运行6000行数据的程序需要很长时间
我使用executemany()是因为它比delete语句使用for循环快,但是我发现很难找到另一种方法来检查数据帧中的值
sname = input("Enter name: ")
cursor = mydb.cursor(prepared=True)
column = df["SKU"]
data=list([(sname, x) for x in column])
query="""DELETE FROM price_calculations1 WHERE Name=%s AND SKU=%s"""
cursor.executemany(query,data)
mydb.commit()
cursor.close()
是否有更有效的代码来实现同样的目标
您可以首先使用
GET id FROM price_calculations1 WHERE Name=%s AND SKU=%s
然后使用MYSQLWHILE
循环删除这些ID,而不需要游标,这似乎更有效见:https://www.mssqltips.com/sqlservertip/6148/sql-server-loop-through-table-rows-without-cursor/
没有前一个get的
WHILE
循环也可以工作见:https://dev.mysql.com/doc/refman/8.0/en/while.html
不要循环,而是尝试在对数据库的一次调用中完成所有工作(使用数据库时,此指南通常适用)
给定名称/sku对的列表:
创建一个查询,标识所有匹配的记录并删除它们
相关问题 更多 >
编程相关推荐