GoCqlTable Cassandra 的 Go 开发包

我要开发同款
匿名用户2015年04月17日
21阅读
所属分类Google Go、程序开发、ORM/持久层框架
授权协议BSD

作品详情

GoCqlTable封装了GoCql-driver目的是简化Go语言操作Cassandra数据库。

示例代码:

// Generic initialization of gocqlc := gocql.NewCluster("127.0.0.1")s, err := c.CreateSession()if err != nil {    log.Fatalln("Unable to open up a session with the Cassandra database (err=" + err.Error() + ")")}// Tell gocqltable to use this session object as the default for new objectsgocqltable.SetDefaultSession(s)// Now we're ready to create our first keyspace. We start by getting a keyspace objectkeyspace := gocqltable.NewKeyspace("gocqltable_test")// Now lets create that in the database using the simple strategy and durable writes (true)err = keyspace.Create(map[string]interface{}{    "class": "SimpleStrategy",    "replication_factor": 1,}, true)if err != nil { // If something went wrong we print the error and quit.    log.Fatalln(err)}// Now that we have a very own keyspace to play with, lets create our first table.// First we need a Row-object to base the table on. It will later be passed to the table wrapper// to be used for returning row-objects as the answer to fetch requests.type User struct{    Email string // Our primary key    Password string `password`     // Use Tags to rename fields    Active bool     `cql:"active"` // If there are multiple tags, use `cql:""` to specify what the table column will be    Created time.Time}// Let's define and instantiate a table object for our user tableuserTable := struct{    recipes.CRUD    // If you looked at the base example first, notice we replaced this line with the recipe}{    recipes.CRUD{ // Here we didn't replace, but rather wrapped the table object in our recipe, effectively adding more methods to the end API        keyspace.NewTable(            "users",            // The table name            []string{"email"},  // Row keys            nil,                // Range keys            User{},             // We pass an instance of the user struct that will be used as a type template during fetches.        ),    },}// Lets create this table in our cassandra databaseerr = userTable.Create()if err != nil {    log.Fatalln(err)}// Now that we have a keyspace with a table in it: lets make a few rows! In the base example we had to write out the CQL manually, this time// around, however, we can insert entire User objects.// Lets instantiate a user object, set its values and insert ituser1 := User{    Email: "1@example.com",    Password: "123456",    Active: true,    Created: time.Now().UTC(),}err = userTable.Insert(user1)if err != nil {    log.Fatalln(err)}// With our database filled up with users, lets query it and print out the results (containing all users in the database).rowset, err := userTable.List()for _, row := range rowset {    user := row.(*User) // Our row variable is a pointer to "interface{}", and here we type assert it to a pointer to "User"}if err != nil {    log.Fatalln(err)}// You can also fetch a single row, obviouslyrow, err := userTable.Get("1@example.com")if err != nil {    log.Fatalln(err)}user := row.(*User)// Lets update this user by changing his passworduser.Password = "654321"err = userTable.Update(user)if err != nil {    log.Fatalln(err)}// Lets delete user 1@example.comerr = userTable.Delete(user)if err != nil {    log.Fatalln(err)}// Lets clean up after ourselves by dropping the keyspace.keyspace.Drop()
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论