Tengo la siguiente clase con un método estático:
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"))
Tengo una base de datos donde ejecuto la consulta y podría devolver una cadena que necesito. Si no contiene la cadena, el método falla y devuelve Ninguno.
Me sale el siguiente resultado:
hey c0031099 hey c0031099
¿Por qué el método se ejecuta dos veces? Espero que alguien pueda ayudarme con esto.
EDITAR: Estoy usando PyCharm como mi IDE
EDIT2: Cambiar a lo siguiente no ayuda al problema:
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"))
Sin embargo, llamar a LookForCuiInLocal () desde otro script no hace que el método se ejecute dos veces
Supongamos que tenemos el archivo foo.py
contiene este código
print("running from", __name__) import foo
Cuando ejecuta el archivo (es el punto de entrada principal del progtwig), se ejecuta con el nombre __main__
, cuando se importa, ejecuta el archivo una segunda vez con el nombre foo
, por lo que la salida sería
running from __main__ running from foo
Rara vez tiene una importación de archivos, generalmente esto sucede con las importaciones circulares, cuando foo
importará la bar
que importará foo
.
Para que el módulo tenga un código que deba ser importado y un código que solo deba ejecutarse cuando sea el progtwig principal, coloque el código principal únicamente dentro de la condición:
if __name__ == "__main__":
Esto hará que se ejecute solo cuando el módulo es el punto de entrada y no cuando se importa.