文档中心

关于 SequoiaDB

快速入门

安装

基本操作

数据模型

SQL引擎

S3引擎

系统架构

数据库管理

连接器

驱动

参考手册

故障排除

SAC 管控中心

Web服务

版本信息

Python开发基础

本节介绍使用 Python 运行 SequoiaDB。首先安装 SequoiaDB,安装信息请查看安装章节。

这里介绍如何使用 Python 客户端驱动接口编写使用 SequoiaDB 数据库的程序。为了简单起见,下面的示例不全是完整的代码,只起示例性作用。可到 SequoiadDB 安装路径下 samples/Python 下获取相应的完整的示例代码。查看 Python API 可获取更多接口信息。

Note:
在 Python 中构造 BSON 时默认使用 dict,dict 的字段是无序的。 如果要求 BSON 中的字段顺序与输入顺序一致(例如,创建索引时索引键的定义),请使用 collections.OrderedDict。

数据库操作

  • 数据库连接

    以下是数据库连接示例代码,演示如何连接到数据库。

    import pysequoiadb
    from pysequoiadb import client
    
    # connect to local db, using default args value.
    host = 'localhost'
    port = 11810
    # user= '', password= ''
    db = client(host, port)
    
    # if no error occurs, connect to specified server successfully
    print 'Connect success'
    db.disconnect()

    在 Linux 下,可以直接运行 python 解释执行上述示例代码。

    Note:

    本例子连接到本地数据库的服务端口 11810,使用的是空的用户名和密码。用户需要根据自己的实际情况配置参数。譬如,需要连接目标主机 sdbserver 上的数据库时,则需要将上述的 host 设置为 'sdbserver'。当数据库已经创建用户时,应该使用正确的用户及密码连接到数据库,否则将会连接失败。

  • 创建集合空间和集合

    以下创建了一个名字为 “sample” 的集合空间和一个名字为 “employee” 的集合,集合空间内的集合的数据页大小为 16k。可根据实际情况选择不同大小的数据页。创建集合后,可对集合做增删改查等操作。

    # connect to db
    db = client("localhost", 11810)
    
    # create collection space
    cs_name = 'sample'
    cs = db.create_collection_space(cs_name)
    
    # create collection
    cl_name = 'employee'
    cl = cs.create_collection(cl_name)
  • 插入数据

    # creat dict object
    record = {"name":"Tom", "age":24}
    oid = cl.insert ( record )

    record 为输入参数,为要插入的数据。dict 对象将会被转换成 BSON 插入到集合中。oid 是插入该记录时,返回的 BSON 结构的 ObjectId。

  • 查询

    import pysequoiadb
    from pysequoiadb import client
    from pysequoiadb.error import SDBEndOfCursor
    
    cr = cl.query()
    while True:
      try:
          record = cr.next()
          print(record)
      except SDBEndOfCursor:
         break
    cr.close()

    查询操作需要一个游标对象存放查询的结果到本地。要获得查询的结果需要使用游标操作。本例使用了游标操作的next接口,表示从查询结果中取到一条记录。此示例中没有设置查询条件,筛选条件,排序情况,及仅使用默认索引。

  • 索引

    index_name = "index_name"
    idx = OrderedDict([('name', 1), ('age', -1)])
    cl.create_index ( idx, index_name, False, False )

    在集合对象 cl 中创建一个以 “name” 为升序,“age” 为降序的索引。

  • 更新

    rule = {"$set":{ "age":19}}
    print rule
    cl.update( rule )

    在集合对象 cl 中更新了记录。实例中没有指定数据匹配规则,所以此示例将更新集合中所有的集合。

  • 错误处理

    调用 API 遇到异常时,python 驱动会将异常直接抛出。可以选择捕获异常,并打印异常信息或是进行一些其他操作。SDBBaseError 异常是基础异常,异常主要包含 errcode、detail 和 error_object。示例如下:

    try:
      cl = db.get_collection("sample.employee")
      condition = {"_id":{"$oid":"5d035e2bb4d450b04fcd0dff"}}
      cl.delete ( condition=condition )
    except SDBBaseError as e:
       print(e)

    上述示例的输出结果:

    SDB_INVALIDARG(-6), Invalid Argument, detail: Failed to delete

集群操作

分区组操作包括创建分区组(creat_replica_group),得到分区组实例( get_replica_group_by_name 和 get_replica_group_by_id),启动分区组所有节点(start),停止分区组所有节点(stop)等。

  • 分区组操作

    以下仅作为示例,真正的应用应包括错误检测等。

    rg = db.create_replica_group ("group1")
    config = {}
    rg.create_node ('sdbserver', '11820', "/opt/sequoiadb/database/data/11820", config)
    rg.start ()

    创建名为 group1 的数据组。创建节点时,定义一个空的 dict 对象 config 表示该节点没有更多的配置内容。

  • 节点操作

    节点操作包括创建节点(create_node),获取主节点(get_master),获取备节点(get_slave),启动节点(start),停止节点(stop)等。

    以下为数据节点操作示例性的例子。真正的应用应包括错误检测等。

    # 获取数据组group
    rg = db.get_replica_group_by_name("group1")
    
    # 获取数据主节点
    master = rg.get_master()
    
    # 获取数据备节点
    slave = rg.get_slave()
回到顶部