我有以下类使用静态方法:
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()不会使该方法运行两次
答案 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__":
这将导致它仅在模块是入口点时运行,而不在导入时运行。