首页 > 解决方案 > Python Mysql连接器锁定其他用户

问题描述

我有一个长时间运行的 python 脚本,它使用 MySQL Connector Python 连接到 MySQL 数据库。这个过程发出一个 http 请求并将数据插入到一个表中。每 8 分钟一次。数据库连接和游标在进程启动时打开一次。最近,其他用户的查询运行时间非常长,或者只是被锁定在表之外。在引入此脚本之前,这不是问题。他们被锁定的表在脚本开始时的 select 语句中使用,但从未在以后每 8 分钟发生一次的 insert 或 update 语句中使用。

我应该在睡眠期间关闭光标吗?甚至是数据库连接?

编辑:在脚本开始时选择一组数据。这是需要处理的项目的主列表,大约。2000 行。

if __name__ == '__main__':
    # DATABASE CONNECTION
    db_args = {
        'host': '',
        'user': '',
        'passwd': '',
        'database': ''
        }

    dbconn = mysql.connector.connect(**db_args)
    cursor = dbconn.cursor()

    # get the data
    cursor.execute("select * from tbl as a join tbl2 as b")
    products = cursor.fetchall()
    for product in products:
        main(product, cursor)
        time.sleep(440)

main 正在发出一个 http 请求,获取 JSON 数据,然后使用光标创建一对插入和/或更新语句。由于产品列表的大小和睡眠时间,该过程需要将近 10 天,因此该过程仍然在后台运行。

标签: pythonmysqlmysql-connector-python

解决方案


推荐阅读