本文档主要介绍如何使用 Python 客户端驱动接口编写使用 SequoiaDB 数据库的程序。完整的示例代码请参考 SequoiaDB 安装目录下的 samples/Python
Note:
在 Python 中构造 BSON 时默认使用 dict,dict 的字段是无序的。如果要求 BSON 中的字段顺序与输入顺序一致(例如,创建索引时索引键的定义),需要使用 collections.OrderedDict。
驱动的接口详情请参考 Python API
连接 SequoiaDB 数据库,之后即可访问、操作数据库
from pysequoiadb import * host = 'localhost' port = 11810 user = "admin" psw = "admin" # 连接数据库 db = client(host, port, user, psw) try: # 使用连接对象访问、操作数据库 # ... pass finally: db.disconnect()
使用多地址连接数据库
host_list = [{'host': 'sdbserver1', 'service': 11810}, {'host': 'sdbserver2', 'service': 11810}] db = client( host_list=host_list, policy='random' )
使用密码文件连接数据库
cipher_file="/opt/sequoiadb/cipher" db = client(host, port, user, cipher_file=cipher_file)
Note:
- 密码文件的使用,请参考密码管理工具
创建集合空间和集合
# 创建集合空间 cs_name = 'sample' cs = db.create_collection_space(cs_name) # 创建集合 cl_name = 'employee' cl = cs.create_collection(cl_name)
插入数据
# 准备待插入的数据 record = {"name":"Tom", "age":24} # 插入数据 result = cl.insert_with_flag(record) print(result)
查询
cr = cl.query() # 遍历游标获取查询的结果 while True: try: record = cr.next() print(record) except SDBEndOfCursor: break cr.close()
索引
在 cl 中创建一个以 “name” 为升序、“age” 为降序的索引
index_name = "index_name" idx = OrderedDict([('name', 1), ('age', -1)]) cl.create_index (idx, index_name, False, False)
更新
modifier = {"$set":{"age":19}} # 更新 cl 中的所有记录 result = cl.update(modifier) print(result)
删除
cond = {"age":19} result = cl.delete(condition=cond) print(result)
集群操作主要涉及复制组与节点。如下以创建复制组、获取节点为例
创建复制组
rg = db.create_replica_group("dataGroup") # 创建一个数据节点 rg.create_node('sdbserver', '11820', "/opt/sequoiadb/database/data/11820") # 启动复制组 rg.start ()
获取节点
# 获取复制组 dataGroup rg = db.get_replica_group_by_name("dataGroup") # 获取主节点 master = rg.get_master()