Skip to content

Instantly share code, notes, and snippets.

@akollegger
Last active March 21, 2024 15:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akollegger/099e4d37161b6a93c9f60f524bb8382c to your computer and use it in GitHub Desktop.
Save akollegger/099e4d37161b6a93c9f60f524bb8382c to your computer and use it in GitHub Desktop.
from dataclasses import dataclass, field
import csv
import json
import os
import pathlib
import sys
import typing
from icecream import ic
from tqdm import tqdm
import dotenv
import matplotlib.pyplot as plt
import neo4j
import pandas as pd
import seaborn as sns
import watermark
dotenv.load_dotenv(dotenv.find_dotenv())
bolt_uri: str = os.environ.get("NEO4J_BOLT")
username: str = os.environ.get("NEO4J_USER")
password: str = os.environ.get("NEO4J_PASS")
driver: neo4j.BoltDriver = neo4j.GraphDatabase.driver(
bolt_uri,
auth = ( username, password, ),
)
example_data = [
{
"data_source": "A",
"record_id": "1",
"name": "Alice",
"age": 30,
},
{
"data_source": "A",
"record_id": "2",
"name": "Bob",
"age": 25,
},
{
"data_source": "B",
"record_id": "3",
"name": "Charlie",
"age": 35,
},
{
"data_source": "B",
"record_id": "4",
"name": "David",
"age": 40,
},
]
with driver.session() as session:
for record in example_data:
session.run("""
WITH toUpper($input.data_source) + "." + toString($input.record_id) as uid
MERGE (rec:Record { uid: uid })
ON CREATE SET rec += $input
RETURN rec.data_source, rec.record_id
""",
input = record
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment