我怎样才能加快我的python脚本?

时间:2015-10-21 11:46:41

标签: python mysql

我有以下python脚本,它逐行从文件读取并执行mysql更新查询。它非常慢,每个查询似乎需要1秒钟。知道为什么这么慢吗?

   with open(fname) as f:
        for line in f:
            line = line.rstrip()
            email, name  = line.split(':')[0], line.split(':')[-1]
            try:
                cursor.execute("UPDATE user SET name=%s WHERE email=%s", (name, email))
            except mariadb.Error as error:
                print("Error: {}".format(error))

3 个答案:

答案 0 :(得分:4)

您应该能够使用索引修复性能问题:

create index idx_user_email on user(email);

1秒的更新时间很长。

答案 1 :(得分:0)

您可以尝试使用多个帖子。

import threading

with open(fname) as f:

    for line in f:
        line = line.rstrip()
        email, name  = line.split(':')[0], line.split(':')[-1]
        thread = threading.Thread(target=updateUser,  args=[name, email] )
        thread.start()


def updateUser(name, email):
    try:
        cursor.execute("UPDATE user SET name=%s WHERE email=%s", (name, email))
    except mariadb.Error as error:
        print("Error: {}".format(error))

在查询数据库时,可以避免浪费时间。因此,当数据库正在处理查询时,您的程序将准备另一个查询。

答案 2 :(得分:0)

如果你想狂热,你也可以关闭日记:

db= sqlite3.connect('database.db')
cursor = db.cursor()
cursor.execute("PRAGMA synchronous = OFF")
cursor.execute("PRAGMA journal_mode = OFF")