Как отключить подробное ведение журнала драйвера neo4j python

#python #neo4j

#python #neo4j

Вопрос:

Я попытался изменить ведение журнала в консоли модуля neo4j python, чтобы отображать только важные сообщения следующим образом:

 neo4j_log = logging.getLogger("neo4j.bolt")
neo4j_log.setLevel(logging.CRITICAL)
  

но я все еще получаю очень подробное ведение журнала каждого успешного создания узла. Я пытаюсь считывать данные из Oracle в сотнях тысяч, и это, я уверен, не способствует производительности.

 [#F2D8]  S: SUCCESS {'stats': {'labels-added': 1, 'nodes-created': 1, 'properties-set': 3}, 'type': 'w', 't_last': 0, 'db': 'neo4j'}
[#F2D8]  S: SUCCESS {'t_first': 0, 'fields': [], 'qid': 539}
[#F2D8]  C: RUN 'CREATE (p:Product) SET p.id = $id, p.preferred_trade_name = $ppn, p.dosage_form=$df ' {'id': 1221, 'ppn': 'product_x', 'df': 'Blank Values'} {}
  

Не то, чтобы часть Oracle имела значение, поскольку это вывод журнала CYPHER, но я в основном делаю это:

 def create_graph_nodes_marketing_applications(tx):
    print("Processing marketing application")
    sql = """
            SELECT VERSION_SEQ, DRUG_PRODUCT_ID,  REGISTRATION_SET_ID, REGISTRATION_UID, DOSSIER_REF_NUMBER AS REG_NAME_DETAILS,
                REGISTRATION_NUMBER, NEXT_RENEWAL_DATE, 
                CASE WHEN RENEWAL_NOT_REQUIRED = 'Y' Then 'No' ELSE CASE WHEN RENEWAL_NOT_REQUIRED = 'N' Then 'Yes' ELSE NULL END END AS RENEWAL_REQUIRED,
                APPLICATION_TYPE,
                APPLICATION_STAGE,
                COUNTRY_DISPLAY_LABEL,
                DISTRIBUTION_TYPE AS PROCEDURE_TYPE,
                DATA_STATE
                FROM DIM_REGISTRATION_SET WHERE DATA_STATE = 'C' AND FLAG_PASSIVE='0'
                AND APPLICATION_TYPE = 'Marketing Application'                
                
        """
    cursor_ariel.execute(sql)
    for row in cursor_ariel.fetchall():
        r = reg(cursor_ariel, row, False)

        tx.run("""
               CREATE (m:MarketingApplication:Registration) 
               SET  m.id                    =   $id,
                 
                    m.REGISTRATION_SET_ID   =   $rsid,
                    m.DRUG_PRODUCT_ID       =   $dpid,
                    m.REGISTRATION_UID      =   $ruid,
                    m.COUNTRY               =   $country,
                    m.PROCEDURE_TYPE        =   $proc,
                    m.REG_NAME_DETAILS      =   $rnd,
                    m.APPLICATION_TYPE      =   $apptype,
                    m.APPLICATION_STAGE     =   $appstage,
                    m.DATA_STATE            =   $state, 
                    m.RENEWAL_REQUIRED      =   $renewal,
                    m.NEXT_RENEWAL_DATE     =   $renewal_date""",
                    id                      =   r.VERSION_SEQ,
                    rsid                    =   r.REGISTRATION_SET_ID,
                    dpid                    =   r.DRUG_PRODUCT_ID,
                    ruid                    =   r.REGISTRATION_UID,
                    country                 =   r.COUNTRY_DISPLAY_LABEL,
                    proc                    =   r.PROCEDURE_TYPE,
                    rnd                     =   r.REG_NAME_DETAILS,
                    apptype                 =   r.APPLICATION_TYPE,
                    appstage                =   r.APPLICATION_STAGE,
                    state                   =   r.DATA_STATE,
                    renewal                 =   r.RENEWAL_REQUIRED,
                    renewal_date            =   r.NEXT_RENEWAL_DATE
               )
  

Комментарии:

1. Спасибо за публикацию вашего вопроса! Вы упоминаете драйвер Neo4j и считываете данные из Oracle, поэтому я не уверен, что полностью понимаю вашу настройку. Не могли бы вы добавить некоторые подробности, пожалуйста?

2. Я читаю курсор с помощью cx_Oracle, перебираю каждую строку и выполняю инструкции CREATE в neo4j для создания узлов, используя данные из каждой строки Oracle. Часть Oracle не имеет значения, скорее драйвер neo4j отправляет сообщения на консоль при каждой успешной транзакции CYPHER.

3. Я не уверен на 100%, но если вы измените имя регистратора на просто «neo4j», это сработает? Кроме того, какую версию драйвера вы используете?

4. 4.1.dev0 в соответствии с python

5. кажется, что neo4j делает это, спасибо 😉

Ответ №1:

Основываясь на источниках драйверов 4.x, я считаю, что регистратор называется просто «neo4j».