代码之家  ›  专栏  ›  技术社区  ›  Vash

尝试创建一个函数,如果用户在python中没有正确回答,该函数将重试输入3次[复制]

  •  0
  • Vash  · 技术社区  · 1 年前

    我有一个python脚本,它正在查询共享linux主机上的MySQL服务器。出于某种原因,对MySQL的查询通常会返回“服务器已消失”错误:

    _mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
    

    如果之后立即再次尝试查询,通常会成功。因此,我想知道python中是否有一种合理的方法来尝试执行查询,如果失败,请重试,最多可尝试固定次数。也许我想在完全放弃之前尝试5次。

    这是我的代码类型:

    conn = MySQLdb.connect(host, user, password, database)
    cursor = conn.cursor()
    
    try:
        cursor.execute(query)
        rows = cursor.fetchall()
        for row in rows:
            # do something with the data
    except MySQLdb.Error, e:
        print "MySQL Error %d: %s" % (e.args[0], e.args[1])
    

    很明显,我可以通过在除外条款中再次尝试来做到这一点,但这太丑陋了,我觉得一定有一种体面的方法来实现这一点。

    0 回复  |  直到 12 年前
        1
  •  0
  •   Medhat Gayed    5 月前

    怎么样:

    conn = MySQLdb.connect(host, user, password, database)
    cursor = conn.cursor()
    attempts = 0
    
    while attempts < 3:
        try:
            cursor.execute(query)
            rows = cursor.fetchall()
            for row in rows:
                # do something with the data
            break
        except MySQLdb.Error, e:
            attempts += 1
            print "MySQL Error %d: %s" % (e.args[0], e.args[1])