728x90
반응형
공식 문서
Golang으로 연결
- neo4j 드라이버 설치
- 연결의 인증은 여러 방식이 있음; BasicAuth, BearerAuth, AuthToken, CustomAuth, ...
- 본 예시는 유저 이름과 패스워드로 인증하는 방식
go get -u github.com/neo4j/neo4j-go-driver/v5/neo4j
- 드라이버 인스턴스 생성
import (
"github.com/neo4j/neo4j-go-driver/v5/neo4j"
"github.com/neo4j/neo4j-go-driver/v5/neo4j/db"
)
func main() {
driver, err := neo4j.NewDriverWithContext(
"neoj4://<DATABASE_URI>:<DATABASE_PORT>,
neo4j.BasicAuth(<USER>, <PASSWD>, ""),
)
}
- 연결 체크
import (
"context"
"github.com/neo4j/neo4j-go-driver/v5/neo4j"
"github.com/neo4j/neo4j-go-driver/v5/neo4j/db"
)
func main() {
driver, err := neo4j.NewDriverWithContext(
"neoj4://<DATABASE_URI>:<DATABASE_PORT>,
neo4j.BasicAuth(<USER>, <PASSWD>, ""),
)
ctx := context.Background()
err := driver.VerifyConnectivity(ctx)
if err != nil {
log.Printf("[GRAPH_DB] Check Connection Error: %v", err)
return err
}
defer driver.Close(ctx)
return nil
}
Golang으로 쿼리
- 쿼리 실행
- ExecuteQuery 메서드로 쿼리 실행
import (
"context"
"github.com/neo4j/neo4j-go-driver/v5/neo4j"
"github.com/neo4j/neo4j-go-driver/v5/neo4j/db"
)
func main() {
driver, err := neo4j.NewDriverWithContext(
"neoj4://<DATABASE_URI>:<DATABASE_PORT>,
neo4j.BasicAuth("<USER>", "<PASSWD>", ""),
)
ctx := context.Background()
// 쿼리 실행
result, queryErr := neo4j.ExecuteQuery(
ctx,
driver,
"MERGE (n:Node {name:"$nodeName"})", // Node라는 유니크 노드 생성
[]map[string]interface{ // 파라미터 생성. nodeName에 들어갈 값
nodeName: "New Node"
},
neo4j.EagerResultTransformer, // 쿼리 결과 변환
neo4j.ExecuteQueryWithDatabase("neo4j"),
)
if queryErr != nil {
return nil, queryErr
}
defer db.Close(ctx)
for _, record := range result.Records {
log.Printf("[GRAPH_DB] Query Result: %v", record.Values...)
}
// 쿼리 결과에 대한 요약
log.Printf("The query `%v` returned %v records in %+v.\n",
result.Summary.Query().Text(), len(result.Records),
result.Summary.ResultAvailableAfter())
}
728x90
반응형
'백엔드 Backend > Golang' 카테고리의 다른 글
[Neo4J] 데이터 핸들링하기 (1) | 2024.12.09 |
---|---|
[Neo4j] Golang 으로 쿼리 핸들링 (0) | 2024.12.06 |
[GO] Ubuntu 서버에 설치 (1) | 2024.10.30 |
[GO] Goroutine이란? (0) | 2024.10.02 |