#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».