check_node_2272.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. 检查节点 2272 的关系
  5. """
  6. import sys
  7. from pathlib import Path
  8. # 修复 Windows 控制台编码问题
  9. if sys.platform == "win32":
  10. import io
  11. sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
  12. sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding="utf-8")
  13. # 添加项目根目录到Python路径
  14. PROJECT_ROOT = Path(__file__).parent.parent
  15. sys.path.insert(0, str(PROJECT_ROOT))
  16. # 设置环境变量以使用 production 配置
  17. import os
  18. from app.config.config import config
  19. if "NEO4J_URI" not in os.environ:
  20. prod_config = config.get("production")
  21. if prod_config:
  22. os.environ["NEO4J_URI"] = prod_config.NEO4J_URI
  23. os.environ["NEO4J_USER"] = prod_config.NEO4J_USER
  24. os.environ["NEO4J_PASSWORD"] = prod_config.NEO4J_PASSWORD
  25. from app.services.neo4j_driver import neo4j_driver
  26. def check_node_2272():
  27. """检查节点 2272 的详细信息"""
  28. print("=" * 60)
  29. print("检查节点 2272 的关系")
  30. print("=" * 60)
  31. with neo4j_driver.get_session() as session:
  32. # 检查节点 2272 的基本信息
  33. node_query = """
  34. MATCH (n)
  35. WHERE id(n) = 2272
  36. RETURN n, labels(n) as labels
  37. """
  38. result = session.run(node_query)
  39. record = result.single()
  40. if not record:
  41. print("节点 2272 不存在")
  42. return
  43. node = record["n"]
  44. labels = record["labels"]
  45. props = dict(node)
  46. print(f"节点ID: 2272")
  47. print(f"节点类型: {labels}")
  48. print(f"节点属性: {props.get('name_zh', 'N/A')} ({props.get('name_en', 'N/A')})")
  49. print()
  50. # 检查所有输出关系(OUTPUT)
  51. output_query = """
  52. MATCH (n)-[r:OUTPUT]->(target)
  53. WHERE id(n) = 2272
  54. RETURN type(r) as rel_type, id(r) as rel_id,
  55. id(target) as target_id, labels(target) as target_labels,
  56. target.name_zh as target_name_zh, target.name_en as target_name_en
  57. """
  58. output_results = session.run(output_query)
  59. output_count = 0
  60. print("OUTPUT 关系:")
  61. for record in output_results:
  62. output_count += 1
  63. target_id = record["target_id"]
  64. target_labels = record["target_labels"]
  65. target_name_zh = record["target_name_zh"] or "N/A"
  66. target_name_en = record["target_name_en"] or "N/A"
  67. rel_id = record["rel_id"]
  68. print(f" [OUTPUT] 2272 -> {target_id} ({target_labels[0] if target_labels else 'Unknown'}): {target_name_zh} ({target_name_en})")
  69. if output_count == 0:
  70. print(" 没有找到 OUTPUT 关系")
  71. print()
  72. # 检查所有输入关系(INPUT,反向)
  73. input_query = """
  74. MATCH (source)-[r:INPUT]->(n)
  75. WHERE id(n) = 2272
  76. RETURN type(r) as rel_type, id(r) as rel_id,
  77. id(source) as source_id, labels(source) as source_labels,
  78. source.name_zh as source_name_zh, source.name_en as source_name_en
  79. """
  80. input_results = session.run(input_query)
  81. input_count = 0
  82. print("INPUT 关系(反向):")
  83. for record in input_results:
  84. input_count += 1
  85. source_id = record["source_id"]
  86. source_labels = record["source_labels"]
  87. source_name_zh = record["source_name_zh"] or "N/A"
  88. source_name_en = record["source_name_en"] or "N/A"
  89. rel_id = record["rel_id"]
  90. print(f" [INPUT] {source_id} ({source_labels[0] if source_labels else 'Unknown'}) -> 2272: {source_name_zh} ({source_name_en})")
  91. if input_count == 0:
  92. print(" 没有找到 INPUT 关系")
  93. print()
  94. if __name__ == "__main__":
  95. check_node_2272()