tencent cloud

游戏数据库 TcaplusDB

产品动态
产品简介
产品概述
产品优势
应用场景
产品架构
地域介绍
购买指南
产品定价
欠费说明
快速入门
了解基本概念
创建集群
创建表格组
创建表格
获取连接信息
访问 TcaplusDB
操作指南
管理集群与表格组
管理表格
监控与告警
访问管理
标签
任务列表
使用 TcaplusDB client
使用 client 工具访问数据
client 工具命令参考
使用 TcaplusDB SDK
变更历史
SDK 下载
SDK for C++ 接口说明
TcaplusDB 错误码
SDK 安装
PB 表 C++SDK 操作方法
TDR 表 C++SDK 操作方法
使用 TcaplusDB RESTful API
RESTful API 接口说明
Go RESTful API 接口说明
Java RESTful API 接口说明
PHP RESTful API 接口说明
Python RESTful API 接口说明
RESTful API 各语言示例下载
实践教程
表结构设计
数据库交互
常见问题
信息咨询类
数据库使用类
数据库原理类
API 文档
History
Introduction
API Category
Making API Requests
Table Group APIs
Other APIs
Table APIs
Cluster APIs
Data Types
Error Codes
相关协议
服务等级协议
服务条款
词汇表
联系我们

Python RESTful API 接口说明

PDF
Focus Mode
Font Size
Last updated: 2024-12-04 10:02:31
本 SDK 是基于 RESTful API 封装的一个 Python 语言 SDK,用于进行 TcaplusDB PB 表的增删查改操作。

准备工作

1. 创建 TcaplusDB 表

创建 TcaplusDB 示例表,示例表为game_players.proto,请参见 创建表格

2. 创建 CVM 实例

创建一台 CVM 实例来运行 SDK 示例程序,配置建议为2核4GB、硬盘50GB,该 CVM 需创建在 TcaplusDB 实例所在 VPC 网络中。
通过 SDK 下载 Python RESTful API SDK 安装包。

使用步骤

1. 通过指定 endpoint、access_id、access_passwd 参数创建 TcaplusRestClient 的对象 client。
2. 通过 client 对象的 SetTargetTable 方法指定想要访问的目标表。
3. 调用接口函数,发送数据访问请求。
#创建 TcaplusRestClient 对象
#endpoint: restful API, such as http://x.x.x.x:80
client = TcaplusRestClient(endpoint, access_id, access_passwd)
#SetTargetTable 指定想要访问的目标表
client.SetTargetTable(table_group_id=1, table_name='game_players')
#发送数据访问请求,以 AddRecord 为例
record = {'player_id': 10805514, 'player_name': 'Calvin', 'player_email': 'calvin@test.com', 'game_server_id': 10,
'login_timestamp': ['2019-12-12 15:00:00'], 'logout_timestamp': ['2019-12-12 16:00:00'], 'is_online': False, 'pay': {'pay_id': 10101, 'amount': 1000, 'method': 1}}
status, resp = client.AddRecord(record, custom_headers=None, return_values=None, table_group_id=None, table_name=None)
4. 用户通过 SetTargetTable 方法指定目标表后,可以通过 GetTargetTable 方法获取目标表。
table_group_id, table_name = client.GetTargetTable()
也可以通过接口的 table_group_id 和 table_name 参数直接指定目标表,通过这种方式不会改变 SetTargetTable 函数设置的目标表。
status, resp = client.AddRecord(record, custom_headers=None, return_values=None, table_group_id=1, table_name='game_players')

接口列表

GetRecord 记录查询

根据主键字段查询表记录,一次返回一条。
@param keys (必须) - 查询目标记录的主键字段(Primary key)字典
@param select_fields (可选) - 返回结果中所包含的非主键字段名数组, 嵌套字段可以通过点分路径的方式指定
@param custom_headers (可选) - 用户需要指定的 http header
@param table_group_id (可选) - 表所在集群表格组 id
@param table_name (可选) - 目标表 table_name

def GetRecord(self, keys, select_fields=[], custom_headers=None, table_group_id=None, table_name=None)

AddRecord 插入记录

插入一条表记录,如果记录存在则报错。
@param record (必须) - 待插入的目标记录 json 对象
@param custom_headers (可选) - 用户需要指定的 http header
@param table_group_id (可选) - 表所在集群表格组 id
@param table_name (可选) - 目标表 table_name

def AddRecord(self, record, custom_headers=None, return_values=None, table_group_id=None, table_name=None)

SetRecord 设置记录

依据主键更新或插入一条记录,如果记录已存在则更新记录相关值,如果记录不存在则插入新的记录。
@param record (必须) - 待设置的目标记录 json 对象,该操作包含插入和修改的语义
@param custom_headers (可选) - 用户需要指定的 http header
@param table_group_id (可选) - 表所在集群表格组 id
@param table_name (可选) - 目标表 table_name

def SetRecord(self, record, custom_headers=None, return_values=None, table_group_id=None, table_name=None)

DeleteRecord 删除记录

根据主键删除一条记录。
@param record (必须) - 待删除的目标记录 json 对象,可以只需要设置主键字段
@param custom_headers (可选) - 用户需要指定的 http header
@param table_group_id (可选) - 表所在集群表格组 id
@param table_name (可选) - 目标表 table_name

def DeleteRecord(self, record, custom_headers=None, return_values=None, table_group_id=None, table_name=None)

FieldGetRecord 指定字段查询

根据主键获取部分字段值,指定需要返回的字段列表(必须为非主键字段),嵌套字段以点分方式表示,如:pay.amount。
@param keys (必须) - 查询目标记录的主键字段(Primary key)字典
@param select_fields (必须) - 返回结果中所包含的非主键字段名数组,嵌套字段可以通过点分路径的方式指定
@param custom_headers (可选) - 用户需要指定的 http header
@param table_group_id (可选) - 表所在集群表格组 id
@param table_name (可选) - 目标表table_name

def FieldGetRecord(self, keys, select_fields, custom_headers=None, table_group_id=None, table_name=None)

FieldSetRecord 指定字段设置

根据主键更新部分字段的值,指定需要更新的字段列表(必须为非主键字段),嵌套字段以点分方式表示,如:pay.amount。
@param record (必须) - 待设置的目标记录 json 对象,该操作包含插入和修改的语义
@param field_path (必须) - 待设置的字段名(路径)数组, 嵌套字段可以通过点分路径的方式指定
@param custom_headers (可选) - 用户需要指定的 http header
@param table_group_id (可选) - 表所在集群表格组 id
@param table_name (可选) - 目标表 table_name

def FieldSetRecord(self, record, field_path, custom_headers=None, return_values=None, table_group_id=None, table_name=None)

FieldIncRecord 指定字段自增/自减

根据主键更新数值类型字段的值,自增或自减。如 pay.method 原始值为200,请求值为50,则最终 pay.method 值为250,如果请求值为负数-50, 则最终 pay.method 值为150。
注意:
这里如果是自减,那么请求传入的自减字段的类型必须为有符号数值类型,如 int32、int64。
@param record (必须) - 待自增、自减的记录,必须保证记录中包含主键,待自增、自减的记录必须是整数类型
@param custom_headers (可选) - 用户需要指定的 http header
@param table_group_id (可选) - 表所在集群表格组 id
@param table_name (可选) - 目标表 table_name

def FieldIncRecord(self, record, custom_headers=None, return_values=None, table_group_id=None, table_name=None)

PartkeyGetRecord 索引查询

根据表定义的索引进行数据查询,返回一条或多条索引键匹配的记录。支持指定字段列表返回。支持指定 limit 和 offset 来控制每个请求返回的包大小。
@param index_keys (必须) - 查询目标记录的索引键字典
@param index_name (必须) - 查询的索引名称
@param select_fields (可选) - 返回结果中所包含的非主键字段名数组, 嵌套字段可以通过点分路径的方式指定
@param custom_headers (可选) - 用户需要指定的 http header
@param table_group_id (可选) - 表所在集群表格组 id
@param table_name (可选) - 目标表 table_name
@param limit (可选) -限制返回的记录条数
@param offset (可选) -设定返回记录数的起始偏移量

def PartkeyGetRecord(self, index_keys, index_name, select_fields=[], custom_headers=None, table_group_id=None, table_name=None, limit=None, offset=None)
对于该接口,1个请求返回的最大包大小为256KB, limit 的设置依赖于单条记录大小。推荐设置策略:
单条记录小于256KB:limit 参考设置为 256KB / [单条记录大小],如记录大小为10KB,则 limit 推荐设置20 - 25左右。
单条记录大于等于256KB:limit 设置为1,即一次请求只返回一条记录。
下面是关于设置 limit 和 offset 以及不设置的响应包情况:
#索引键情况
{'player_id': 39775502, 'player_name': 'Sara'}

#请求不设置 limit 和 offset,响应包如下
{u'ErrorCode': 0, u'ErrorMsg': u'Succeed', u'MultiRecords': [{u'RecordVersion': 1, u'Record': {u'logout_timestamp': [u'2019-12-12 16:00:00'], u'player_name': u'Sara', u'login_timestamp': [u'2019-12-12 15:00:00'], u'pay': {u'amount': 100, u'pay_id': 1, u'method': 1}, u'game_server_id': 1, u'player_email': u'sara@test.com', u'is_online': True, u'player_id': 39775502}}, {u'RecordVersion': 1, u'Record': {u'logout_timestamp': [u'2019-12-12 16:10:00'], u'player_name': u'Sara', u'login_timestamp': [u'2019-12-12 15:10:00'], u'pay': {u'amount': 200, u'pay_id': 2}, u'game_server_id': 2, u'player_email': u'sara@163.com', u'is_online': True, u'player_id': 39775502}}, {u'RecordVersion': 1, u'Record': {u'logout_timestamp': [u'2019-12-12 16:20:00'], u'player_name': u'Sara', u'login_timestamp': [u'2019-12-12 15:20:00'], u'pay': {u'amount': 300, u'pay_id': 3, u'method': 1}, u'game_server_id': 3, u'player_email': u'sara@gmail.com', u'is_online': True, u'player_id': 39775502}}], u'RemainNum': 0, u'TotalNum': 3}

#请求设置 limit 和 offset, 其中 limit 设置为2,响应包如下
{u'ErrorCode': 0, u'ErrorMsg': u'Succeed', u'MultiRecords': [{u'RecordVersion': 1, u'Record': {u'logout_timestamp': [u'2019-12-12 16:00:00'], u'player_name': u'Sara', u'login_timestamp': [u'2019-12-12 15:00:00'], u'pay': {u'amount': 100, u'pay_id': 1, u'method': 1}, u'game_server_id': 1, u'player_email': u'sara@test.com', u'is_online': True, u'player_id': 39775502}}, {u'RecordVersion': 1, u'Record': {u'logout_timestamp': [u'2019-12-12 16:10:00'], u'player_name': u'Sara', u'login_timestamp': [u'2019-12-12 15:10:00'], u'pay': {u'amount': 200, u'pay_id': 2}, u'game_server_id': 2, u'player_email': u'sara@163.com', u'is_online': True, u'player_id': 39775502}}], u'RemainNum': 1, u'TotalNum': 3}
从上面响应包来看,设置了 limit 和 offset 的结果返回条数和设定 limit 大小保持一致。 如果用户想获取全量的索引数据,则可根据响应包中的RemainNumTotalNum这两个标识来判断数据是否获取完全。

Help and Support

Was this page helpful?

Help us improve! Rate your documentation experience in 5 mins.

Feedback