GoCqlTable

Cassandra 的 Go 开发包
授权协议 BSD
开发语言 Google Go
所属分类 程序开发、 ORM/持久层框架
软件类型 开源软件
地区 不详
投 递 者 董新觉
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

示例代码:

// Generic initialization of gocql
c := 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 objects
gocqltable.SetDefaultSession(s)


// Now we're ready to create our first keyspace. We start by getting a keyspace object
keyspace := 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 table
userTable := 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 database
err = 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 it
user1 := 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, obviously
row, err := userTable.Get("1@example.com")
if err != nil {
    log.Fatalln(err)
}
user := row.(*User)


// Lets update this user by changing his password
user.Password = "654321"
err = userTable.Update(user)
if err != nil {
    log.Fatalln(err)
}


// Lets delete user 1@example.com
err = userTable.Delete(user)
if err != nil {
    log.Fatalln(err)
}

// Lets clean up after ourselves by dropping the keyspace.
keyspace.Drop()
 相关资料
  • 本节我将介绍几个开发工具,它们都具有自动化提示,自动化fmt功能。因为它们都是跨平台的,所以安装步骤之类的都是通用的。 LiteIDE LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),由visualfc编写。 图1.4 LiteIDE主界面 LiteIDE主要特点: 支持主流操作系统 Windows Linux MacOS X Go编译环境管理和切换 管理和切换多个Go

  • 写这本书主要是灵感来自于: https://github.com/thekarangoel/Projects 然后我就想到了当初做PHP的时候,也有类似的项目,觉得golang也可以实现一个类似的书籍,暂且把书名定为《Go实战开发》 github 地址:https://github.com/astaxie/go-best-practice

  • 写这本书主要是灵感来自于: https://github.com/thekarangoel/Projects 然后我就想到了当初做PHP的时候,也有类似的项目,觉得golang也可以实现一个类似的书籍,暂且把书名定为《Go实战开发》 书的大纲 基础篇 开发环境配置 开发工具配置 基础语法训练 时间字符串处理技术 基础的系统信息 常用技术篇 文件操作 系统操作 图像处理 面向对象 数据库篇 Mysq

  • 本书首先介绍了使用 Go 官方库开发 RPC 服务的方法,然后介绍流行 gRPC 库以及其它一些 RPC 框架如 Thrift 等,后面重点介绍高性能的分布式全功能的 RPC 框架 rpcx。读者通过阅读本书,可以快速学习和了解 Go 生态圈的 RPC 开发技术,并且应用到产品的开发中。

  • 问题内容: 可以动态运行以便用于基于插件的应用程序吗? 在eclipse中,我们可以创建一些Eclipse可以动态运行的插件。 Go中可能有同样的事情吗? 问题答案: 我认为这是两个独立的问题: 具有动态负荷 有插件 第一个完全不是:Go程序是静态链接的,这意味着您无法将代码添加到正在运行的程序中。这也意味着您必须编译该程序以使其集成插件。 幸运的是,您可以像大多数语言一样在Go中定义一个接受插件

  • LiteIDE LiteIDE是一款开源、跨平台的轻量级Go语言集成开发环境(IDE)。 支持的操作系统 Windows x86 (32-bit or 64-bit) Linux x86 (32-bit or 64-bit) 下载地址 :http://sourceforge.net/projects/liteide/files/ 源码地址 :https://github.com/visualfc/

  • 好不容易抢了一个二面,还是十一点半的大中午。。 1、介绍实习项目 (讲到口干舌燥,每个项目从业务需求讲到实现到后期优化) 2、如果有一个大文件从客户端上传,客户端和后端需要做哪些操作? 3、如果上传过程中出现网络波动怎么办? 4、上传后出现乱序怎么办? 5、高并发场景下,服务器压力过大有哪些优化方法,怎么做负载均衡? 6、如何在千万级数中找到一个数是否存在? 7、讲一讲tcp三次握手?什么情况下会

  • 0712一面,问题: 1. Mysql数据库的默认隔离级别,有哪四种隔离级别,然后给了个例子问在该隔离级别下的数据读取状态。 2. HTTPS如何保证安全,以及的整个过程。 3. 为什么握手要三次 4. io多路复用 5. docker和虚拟机的区别,实现的原理 6. 数据库字段的长度如何影响查询速度 7. redis中的数据结构 8. 情景题:对一个接口进行访问限制,要求1分钟内仅能访问三次,伪