通過 Python SDK 為已有資料表或多元索引建立映射關係,以便通過 SQL 訪問資料。
前提條件
-
安裝Tablestore Python SDK並初始化用戶端。
-
SQL 查詢功能需要使用 5.4.2 及以上版本,建議使用最新版本。
功能說明
Tablestore 不會自動為資料表建立 SQL 映射表。要通過 SQL 訪問資料表,需要先執行 CREATE TABLE 建立映射關係。調用 exe_sql_query 方法執行 CREATE TABLE 語句,為已有資料表或多元索引建立映射關係。
def exe_sql_query(self, query)
為資料表建立映射關係時,映射表名稱必須與資料表名稱一致,欄位名稱不區分大小寫,欄位類型需要與資料表欄位類型對應。為多元索引建立映射關係時,映射表名稱可以自訂,並通過 ENGINE 和 ENGINE_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 |
要執行的 |
情境樣本
為多元索引建立映射關係
將 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
原因:映射關係已存在。該映射關係由 CREATE TABLE 語句建立。
解決方案:如需避免重複建立報錯,在語句中使用 IF NOT EXISTS。如需調整映射關係的結構,先使用 DESCRIBE 語句查看映射關係,再使用 ALTER TABLE 語句修改。