在python中执行两次的方法

时间:2017-02-16 13:34:35

标签: python pycharm

我有以下类使用静态方法:

class Helper:
     @staticmethod
    def LookForCuiInLocal(disease, language):
        conn = mysql.connector.connect(stuff here)

        cursor = conn.cursor(buffered=True)

        findLocalQuery = ("SELECT umls_concept_id from translation WHERE source_text = '{}'".format(disease))
        print("hey")

        try:
            cursor.execute(findLocalQuery)
            resultList = cursor.fetchone()[0]
            cursor.close()
            conn.close()
            return resultList
        except (mysql.connector.Error, TypeError) as e:
            print("Error when finding local CUI : {}".format(e))
            return None

print(Helper().LookForCuiInLocal("paradentose", "da"))

我有一个数据库,我运行查询,它可能会返回我需要的字符串。如果它不包含字符串,则方法失败并返回None。

我得到以下输出:

hey
c0031099
hey
c0031099

为什么方法执行两次? 我希望有人可以帮助我。

编辑: 我正在使用PyCharm作为我的IDE

EDIT2:更改为以下内容无效:

def LookForCuiInLocal(disease, language):
    conn = mysql.connector.connect(stuff here)

    cursor = conn.cursor(buffered=True)

     findLocalQuery = ("SELECT umls_concept_id from translation WHERE source_text = '{}'".format(disease))
     print("hey")

      try:
          cursor.execute(findLocalQuery)
          resultList = cursor.fetchone()[0]
          cursor.close()
          conn.close()
          return resultList
    except (mysql.connector.Error, TypeError) as e:
          print("Error when finding local CUI : {}".format(e))
          return None

print(Helper().LookForCuiInLocal("paradentose", "da"))

但是,从另一个脚本调用LookForCuiInLocal()不会使该方法运行两次

1 个答案:

答案 0 :(得分:3)

假设我们有包含此代码的文件foo.py

print("running from", __name__)
import foo

当您运行文件(它是程序的入口点)时,它以名称__main__运行,当它被导入时,它运行文件 a第二次,名称为foo,因此输出为

running from __main__
running from foo

您很少有自己的文件导入,通常这会发生在循环导入中 - 当foo导入bar时会导入foo

对于模块具有应该可导入的代码和仅在主程序运行时才运行的代码,将主要代码放在条件中:

if __name__ == "__main__":

这将导致它仅在模块是入口点时运行,而不在导入时运行。