为了账号安全,请及时绑定邮箱和手机立即绑定

我可以使用 Go 连接到 Memgraph 吗?

我可以使用 Go 连接到 Memgraph 吗?

Go
烙印99 2023-03-15 14:52:28
我想从 Go 连接到 Memgraph 数据库的运行实例。我正在使用 Docker 并安装了 Memgraph 平台。我到底需要做什么?
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

从 Go 连接到 Memgraph 的过程相当简单。为此,您需要使用 Bolt 协议。以下是所需的步骤:


首先,为您的应用程序创建一个新目录,/MyApp并将您自己定位在其中。program.go接下来,使用以下代码创建一个文件:


package main


import (

    "fmt"


    "github.com/neo4j/neo4j-go-driver/v4/neo4j"

)


func main() {

    dbUri := "bolt://localhost:7687"

    driver, err := neo4j.NewDriver(dbUri, neo4j.BasicAuth("username", "password", ""))

    if err != nil {

        panic(err)

    }

    // Handle driver lifetime based on your application lifetime requirements  driver's lifetime is usually

    // bound by the application lifetime, which usually implies one driver instance per application

    defer driver.Close()

    item, err := insertItem(driver)

    if err != nil {

        panic(err)

    }

    fmt.Printf("%v\n", item.Message)

}


func insertItem(driver neo4j.Driver) (*Item, error) {

    // Sessions are short-lived, cheap to create and NOT thread safe. Typically create one or more sessions

    // per request in your web application. Make sure to call Close on the session when done.

    // For multi-database support, set sessionConfig.DatabaseName to requested database

    // Session config will default to write mode, if only reads are to be used configure session for

    // read mode.

    session := driver.NewSession(neo4j.SessionConfig{})

    defer session.Close()

    result, err := session.WriteTransaction(createItemFn)

    if err != nil {

        return nil, err

    }

    return result.(*Item), nil

}


func createItemFn(tx neo4j.Transaction) (interface{}, error) {

    records, err := tx.Run(

        "CREATE (a:Greeting) SET a.message = $message RETURN 'Node ' + id(a) + ': ' + a.message",

        map[string]interface{}{"message": "Hello, World!"})

    // In face of driver native errors, make sure to return them directly.

    // Depending on the error, the driver may try to execute the function again.

    if err != nil {

        return nil, err

    }

    record, err := records.Single()

    if err != nil {

        return nil, err

    }

    // You can also retrieve values by name, with e.g. `id, found := record.Get("n.id")`

    return &Item{

        Message: record.Values[0].(string),

    }, nil

}


type Item struct {

    Message string

}

现在,go.mod使用go mod init example.com/hello命令创建一个文件。我之前提到过 Bolt 驱动器。您需要添加它go get github.com/neo4j/neo4j-go-driver/v4@v4.3.1。你可以运行你的程序go run .\program.go。



查看完整回答
反对 回复 2023-03-15
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号