创建映射关系

更新时间:
复制 MD 格式

通过 Python SDK 为已有数据表或多元索引创建映射关系,以便通过 SQL 访问数据。

前提条件

  • 安装Tablestore Python SDK并初始化客户端。

  • SQL 查询功能需要使用 5.4.2 及以上版本,建议使用最新版本。

功能说明

调用 exe_sql_query 方法执行 CREATE TABLE 语句,为已有数据表或多元索引创建映射关系。

def exe_sql_query(self, query)

为数据表创建映射关系时,映射表名称必须与数据表名称一致,字段名称不区分大小写,字段类型需要与数据表字段类型对应。为多元索引创建映射关系时,映射表名称可以自定义,并通过 ENGINEENGINE_ATTRIBUTE 指定数据表和多元索引。

有关 CREATE TABLE 语句的语法、字段类型和参数说明,请参见DDL 操作

以下示例为 example_table 数据表创建映射关系。

query = """
CREATE TABLE example_table (
    pk VARCHAR(1024), long_value BIGINT, double_value DOUBLE,
    string_value MEDIUMTEXT, bool_value BOOL, PRIMARY KEY(pk)
)
"""
client.exe_sql_query(query)

参数说明

exe_sql_query 方法包含以下参数。

名称

类型

说明

query(必选)

String

要执行的 CREATE TABLE 语句,用于定义映射表名称、字段、主键和执行引擎。数据表映射和多元索引映射使用不同语法。

场景示例

为多元索引创建映射关系

ENGINE 设置为 searchindex,并在 ENGINE_ATTRIBUTE 中指定数据表和多元索引名称。以下示例为 example_table 数据表的 example_index 多元索引创建名为 example_search_table 的映射关系。

query = """
CREATE TABLE example_search_table (
    pk MEDIUMTEXT, long_value BIGINT, string_value MEDIUMTEXT
) ENGINE='searchindex'
ENGINE_ATTRIBUTE='{"index_name":"example_index","table_name":"example_table"}'
"""
client.exe_sql_query(query)

常见问题

创建映射关系时提示 Table 'instance.table' doesn't exist

原因:指定的数据表或多元索引不存在。CREATE TABLE 语句仅创建映射关系,不会创建实际的数据表或多元索引。

解决方案:检查名称并确保数据表或多元索引已创建,然后重新执行语句。

创建映射关系时提示 Table 'instance.table' already exists

原因:映射关系已存在。执行 DESCRIBESELECT 语句时也可能自动创建映射关系;自动创建的映射关系仅包含主键列和预定义列。

解决方案:如需避免重复创建报错,在语句中使用 IF NOT EXISTS。如需调整自动创建的映射关系,评估业务影响后先删除,再重新创建。