优化Python代码以获得更好的性能

2024-10-03 02:48:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码从一个表中搜索ID并插入到另一个表中。GENRETB有大约200万张唱片,MOVIETB有大约80万张唱片。代码运行良好,但速度非常慢。需要帮助来优化和提高这段代码的性能

import sqlite3

conn = sqlite3.connect('movieDB.db')
print ("Opened database successfully");

cursor = conn.execute("SELECT MOVIENAME FROM GENRETB")

for row in cursor:
    mname = row[0]
    print(mname)
    cursor2 = conn.execute("SELECT ID FROM MOVIETB WHERE MOVIENAME = ?",(mname,))
    for row2 in cursor2:
        mid = row2[0]
        print(mid)
        conn.execute ("UPDATE GENRETB SET ID = ? WHERE MOVIENAME = ?",(mid,mname))

conn.commit()
conn.close()

提前谢谢


Tags: 代码fromidexecuteconnselectsqlite3cursor
1条回答
网友
1楼 · 发布于 2024-10-03 02:48:01

它很慢,因为内部查询会运行很多次。 最终您将在python中执行join。 最好在sql中使用join

例如:

cursor = conn.execute("SELECT GENRETB.MOVIENAME, MOVIETB.MOVIENAME, 
MOVIETB.MID FROM GENRETB JOIN MOVIETB ON MMOVIETB.OVIENAME = GENRETB.MOVIENAME")

您甚至可以执行一次更新而不是多次更新。 例如:

UPDATE GENRETB SET ID = (SELECT MID FROM MOVIETB WHERE MOVIENAME = GENRETB.MOVIENAME)

也许你必须改变,因为我不知道你的数据库

我不知道是否需要打印mid。如果是的话,您只能查询它,这样会更快。如果没有,就不需要运行循环,只需要一个update语句

另一个问题是你想做什么是否是个好主意。这取决于表之间的关系

相关问题 更多 >