blob: 0edc630885e6e7361b608355593fd351cffa54ff [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[707],{1103:function(s,t,a){"use strict";a.r(t);var n=a(29),e=Object(n.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"python-原生接口"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#python-原生接口"}},[s._v("#")]),s._v(" Python 原生接口")]),s._v(" "),t("h2",{attrs:{id:"依赖"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#依赖"}},[s._v("#")]),s._v(" 依赖")]),s._v(" "),t("p",[s._v("在使用 Python 原生接口包前,您需要安装 thrift (>=0.13) 依赖。")]),s._v(" "),t("h2",{attrs:{id:"如何使用-示例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#如何使用-示例"}},[s._v("#")]),s._v(" 如何使用 (示例)")]),s._v(" "),t("p",[s._v("首先下载最新安装包:"),t("code",[s._v("pip3 install apache-iotdb")])]),s._v(" "),t("p",[t("em",[s._v("注意:如果您想要安装 0.13.0 版本的 Python API,不要使用 "),t("code",[s._v("pip install apache-iotdb==0.13.0")]),s._v(",请使用 "),t("code",[s._v("pip install apache-iotdb==0.13.0.post1")]),s._v(" 作为替代!")])]),s._v(" "),t("p",[s._v("您可以从这里得到一个使用该包进行数据读写的例子:"),t("a",{attrs:{href:"https://github.com/apache/iotdb/blob/master/client-py/SessionExample.py",target:"_blank",rel:"noopener noreferrer"}},[s._v("Session Example"),t("OutboundLink")],1)]),s._v(" "),t("p",[s._v("关于对齐时间序列读写的例子:"),t("a",{attrs:{href:"https://github.com/apache/iotdb/blob/master/client-py/SessionAlignedTimeseriesExample.py",target:"_blank",rel:"noopener noreferrer"}},[s._v("Aligned Timeseries Session Example"),t("OutboundLink")],1)]),s._v(" "),t("p",[s._v("(您需要在文件的头部添加"),t("code",[s._v("import iotdb")]),s._v(")")]),s._v(" "),t("p",[s._v("或者:")]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("Session "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" Session\n\nip "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"127.0.0.1"')]),s._v("\nport_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6667"')]),s._v("\nusername_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"root"')]),s._v("\npassword_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"root"')]),s._v("\nsession "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" Session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("ip"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" port_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" username_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" password_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nsession"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("open")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("False")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nzone "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("get_time_zone"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nsession"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("close"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])]),t("h2",{attrs:{id:"基本接口说明"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#基本接口说明"}},[s._v("#")]),s._v(" 基本接口说明")]),s._v(" "),t("p",[s._v("下面将给出 Session 对应的接口的简要介绍和对应参数:")]),s._v(" "),t("h3",{attrs:{id:"初始化"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#初始化"}},[s._v("#")]),s._v(" 初始化")]),s._v(" "),t("ul",[t("li",[s._v("初始化 Session")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" Session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("ip"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" port_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" username_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" password_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" fetch_size"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1024")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" zone_id"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"UTC+8"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[s._v("开启 Session,并决定是否开启 RPC 压缩")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("open")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("enable_rpc_compression"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("False")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("注意: 客户端的 RPC 压缩开启状态需和服务端一致")]),s._v(" "),t("ul",[t("li",[s._v("关闭 Session")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("close"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("h3",{attrs:{id:"数据定义接口-ddl"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#数据定义接口-ddl"}},[s._v("#")]),s._v(" 数据定义接口 DDL")]),s._v(" "),t("h4",{attrs:{id:"存储组管理"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#存储组管理"}},[s._v("#")]),s._v(" 存储组管理")]),s._v(" "),t("ul",[t("li",[s._v("设置存储组")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("set_storage_group"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("group_name"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[s._v("删除单个或多个存储组")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("delete_storage_group"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("group_name"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nsession"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("delete_storage_groups"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("group_name_lst"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("h4",{attrs:{id:"时间序列管理"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#时间序列管理"}},[s._v("#")]),s._v(" 时间序列管理")]),s._v(" "),t("ul",[t("li",[s._v("创建单个或多个时间序列")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("create_time_series"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("ts_path"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" data_type"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" encoding"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" compressor"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n props"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("None")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" tags"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("None")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" attributes"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("None")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" alias"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("None")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n \nsession"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("create_multi_time_series"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("\n ts_path_lst"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" data_type_lst"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" encoding_lst"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" compressor_lst"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n props_lst"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("None")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" tags_lst"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("None")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" attributes_lst"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("None")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" alias_lst"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("None")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br")])]),t("ul",[t("li",[s._v("创建对齐时间序列")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("create_aligned_time_series"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("\n device_id"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" measurements_lst"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" data_type_lst"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" encoding_lst"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" compressor_lst\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br")])]),t("p",[s._v("注意:目前"),t("strong",[s._v("暂不支持")]),s._v("使用传感器别名。")]),s._v(" "),t("ul",[t("li",[s._v("删除一个或多个时间序列")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("delete_time_series"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("paths_list"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[s._v("检测时间序列是否存在")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("check_time_series_exists"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("path"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("h3",{attrs:{id:"数据操作接口-dml"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#数据操作接口-dml"}},[s._v("#")]),s._v(" 数据操作接口 DML")]),s._v(" "),t("h4",{attrs:{id:"数据写入"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#数据写入"}},[s._v("#")]),s._v(" 数据写入")]),s._v(" "),t("p",[s._v("推荐使用 insert_tablet 帮助提高写入效率")]),s._v(" "),t("ul",[t("li",[s._v("插入一个 Tablet,Tablet 是一个设备若干行数据块,每一行的列都相同\n"),t("ul",[t("li",[t("strong",[s._v("写入效率高")])]),s._v(" "),t("li",[t("strong",[s._v("支持写入空值")]),s._v(" (0.13 版本起)")])])])]),s._v(" "),t("p",[s._v("Python API 里目前有两种 Tablet 实现")]),s._v(" "),t("ul",[t("li",[s._v("普通 Tablet")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("values_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("False")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("11")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10011.1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"test01"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("True")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("11111")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.25")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("101.0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"test02"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("False")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("188.1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("688.25")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"test03"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("True")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.25")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"test04"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\ntimestamps_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\ntablet_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" Tablet"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("\n device_id"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" measurements_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" data_types_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" values_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" timestamps_\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nsession"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("insert_tablet"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("tablet_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br")])]),t("ul",[t("li",[s._v("Numpy Tablet")])]),s._v(" "),t("p",[s._v("相较于普通 Tablet,Numpy Tablet 使用 "),t("a",{attrs:{href:"https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html",target:"_blank",rel:"noopener noreferrer"}},[s._v("numpy.ndarray"),t("OutboundLink")],1),s._v(" 来记录数值型数据。\n内存占用和序列化耗时会降低很多,写入效率也会有很大提升。")]),s._v(" "),t("p",[t("strong",[s._v("注意")])]),s._v(" "),t("ol",[t("li",[s._v("Tablet 中的每一列时间戳和值记录为一个 ndarray")]),s._v(" "),t("li",[s._v("ndarray 推荐使用如下面例子中的特定的 dtype,如果不使用,不会影响正确性。")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("data_types_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("BOOLEAN"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("INT32"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("INT64"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("FLOAT"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("DOUBLE"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("TEXT"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\nnp_values_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n np"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("array"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("False")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("True")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("False")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("True")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("BOOLEAN"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("np_dtype"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n np"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("array"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("INT32"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("np_dtype"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n np"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("array"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("11")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("11111")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("INT64"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("np_dtype"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n np"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("array"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.25")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("188.1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("FLOAT"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("np_dtype"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n np"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("array"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10011.1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("101.0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("688.25")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6.25")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("DOUBLE"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("np_dtype"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n np"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("array"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"test01"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"test02"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"test03"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"test04"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("TEXT"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("np_dtype"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\nnp_timestamps_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" np"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("array"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("4")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" TSDataType"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("INT64"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("np_dtype"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nnp_tablet_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" NumpyTablet"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"root.sg_test_01.d_02"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" measurements_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" data_types_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" np_values_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" np_timestamps_\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nsession"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("insert_tablet"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("np_tablet_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br")])]),t("ul",[t("li",[s._v("插入多个 Tablet")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("insert_tablets"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("tablet_lst"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[s._v("插入一个 Record,一个 Record 是一个设备一个时间戳下多个测点的数据。")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("insert_record"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("device_id"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" timestamp"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" measurements_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" data_types_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" values_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[s._v("插入多个 Record")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("insert_records"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("\n device_ids_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" time_list_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" measurements_list_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" data_type_list_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" values_list_\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br")])]),t("ul",[t("li",[s._v("插入同属于一个 device 的多个 Record")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("insert_records_of_one_device"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("device_id"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" time_list"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" measurements_list"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" data_types_list"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" values_list"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("h4",{attrs:{id:"带有类型推断的写入"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#带有类型推断的写入"}},[s._v("#")]),s._v(" 带有类型推断的写入")]),s._v(" "),t("p",[s._v('当数据均是 String 类型时,我们可以使用如下接口,根据 value 的值进行类型推断。例如:value 为 "true" ,就可以自动推断为布尔类型。value 为 "3.2" ,就可以自动推断为数值类型。服务器需要做类型推断,可能会有额外耗时,速度较无需类型推断的写入慢')]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("insert_str_record"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("device_id"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" timestamp"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" measurements"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" string_values"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("h4",{attrs:{id:"对齐时间序列的写入"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#对齐时间序列的写入"}},[s._v("#")]),s._v(" 对齐时间序列的写入")]),s._v(" "),t("p",[s._v("对齐时间序列的写入使用 insert_aligned_xxx 接口,其余与上述接口类似:")]),s._v(" "),t("ul",[t("li",[s._v("insert_aligned_record")]),s._v(" "),t("li",[s._v("insert_aligned_records")]),s._v(" "),t("li",[s._v("insert_aligned_records_of_one_device")]),s._v(" "),t("li",[s._v("insert_aligned_tablet")]),s._v(" "),t("li",[s._v("insert_aligned_tablets")])]),s._v(" "),t("h3",{attrs:{id:"iotdb-sql-接口"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#iotdb-sql-接口"}},[s._v("#")]),s._v(" IoTDB-SQL 接口")]),s._v(" "),t("ul",[t("li",[s._v("执行查询语句")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("execute_query_statement"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("sql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[s._v("执行非查询语句")])]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[s._v("session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("execute_non_query_statement"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("sql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("h3",{attrs:{id:"对-pandas-的支持"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#对-pandas-的支持"}},[s._v("#")]),s._v(" 对 Pandas 的支持")]),s._v(" "),t("p",[s._v("我们支持将查询结果轻松地转换为 "),t("a",{attrs:{href:"https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html",target:"_blank",rel:"noopener noreferrer"}},[s._v("Pandas Dataframe"),t("OutboundLink")],1),s._v("。")]),s._v(" "),t("p",[s._v("SessionDataSet 有一个方法"),t("code",[s._v(".todf()")]),s._v(",它的作用是消费 SessionDataSet 中的数据,并将数据转换为 pandas dataframe。")]),s._v(" "),t("p",[s._v("例子:")]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("Session "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" Session\n\nip "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"127.0.0.1"')]),s._v("\nport_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6667"')]),s._v("\nusername_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"root"')]),s._v("\npassword_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"root"')]),s._v("\nsession "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" Session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("ip"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" port_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" username_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" password_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nsession"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("open")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("False")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nresult "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("execute_query_statement"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"SELECT ** FROM root"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Transform to Pandas Dataset")]),s._v("\ndf "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" result"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("todf"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\nsession"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("close"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Now you can work with the dataframe")]),s._v("\ndf "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br")])]),t("h3",{attrs:{id:"iotdb-testcontainer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#iotdb-testcontainer"}},[s._v("#")]),s._v(" IoTDB Testcontainer")]),s._v(" "),t("p",[s._v("Python 客户端对测试的支持是基于"),t("code",[s._v("testcontainers")]),s._v("库 (https://testcontainers-python.readthedocs.io/en/latest/index.html) 的,如果您想使用该特性,就需要将其安装到您的项目中。")]),s._v(" "),t("p",[s._v("要在 Docker 容器中启动(和停止)一个 IoTDB 数据库,只需这样做:")]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("class")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("MyTestCase")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("unittest"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("TestCase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("def")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("test_something")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("self"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("with")]),s._v(" IoTDBContainer"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("as")]),s._v(" c"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n session "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" Session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"localhost"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" c"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("get_exposed_port"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6667")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"root"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"root"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("open")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("False")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n result "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("execute_query_statement"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"SHOW TIMESERIES"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("print")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("result"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("close"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br")])]),t("p",[s._v("默认情况下,它会拉取最新的 IoTDB 镜像 "),t("code",[s._v("apache/iotdb:latest")]),s._v("进行测试,如果您想指定待测 IoTDB 的版本,您只需要将版本信息像这样声明:"),t("code",[s._v('IoTDBContainer("apache/iotdb:0.12.0")')]),s._v(",此时,您就会得到一个"),t("code",[s._v("0.12.0")]),s._v("版本的 IoTDB 实例。")]),s._v(" "),t("h2",{attrs:{id:"给开发人员"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#给开发人员"}},[s._v("#")]),s._v(" 给开发人员")]),s._v(" "),t("h3",{attrs:{id:"介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#介绍"}},[s._v("#")]),s._v(" 介绍")]),s._v(" "),t("p",[s._v("这是一个使用 thrift rpc 接口连接到 IoTDB 的示例。在 Windows 和 Linux 上操作几乎是一样的,但要注意路径分隔符等不同之处。")]),s._v(" "),t("h3",{attrs:{id:"依赖-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#依赖-2"}},[s._v("#")]),s._v(" 依赖")]),s._v(" "),t("p",[s._v("首选 Python3.7 或更高版本。")]),s._v(" "),t("p",[s._v("必须安装 thrift(0.11.0 或更高版本)才能将 thrift 文件编译为 Python 代码。下面是官方的安装教程,最终,您应该得到一个 thrift 可执行文件。")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("http://thrift.apache.org/docs/install/\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("在开始之前,您还需要在 Python 环境中安装"),t("code",[s._v("requirements_dev.txt")]),s._v("中的其他依赖:")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("pip "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -r requirements_dev.txt\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("h3",{attrs:{id:"编译-thrift-库并调试"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#编译-thrift-库并调试"}},[s._v("#")]),s._v(" 编译 thrift 库并调试")]),s._v(" "),t("p",[s._v("在 IoTDB 源代码文件夹的根目录下,运行"),t("code",[s._v("mvn clean generate-sources -pl client-py -am")]),s._v(",")]),s._v(" "),t("p",[s._v("这个指令将自动删除"),t("code",[s._v("iotdb/thrift")]),s._v("中的文件,并使用新生成的 thrift 文件重新填充该文件夹。")]),s._v(" "),t("p",[s._v("这个文件夹在 git 中会被忽略,并且"),t("strong",[s._v("永远不应该被推到 git 中!")])]),s._v(" "),t("p",[t("strong",[s._v("注意")]),s._v("不要将"),t("code",[s._v("iotdb/thrift")]),s._v("上传到 git 仓库中 !")]),s._v(" "),t("h3",{attrs:{id:"session-客户端-使用示例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#session-客户端-使用示例"}},[s._v("#")]),s._v(" Session 客户端 & 使用示例")]),s._v(" "),t("p",[s._v("我们将 thrift 接口打包到"),t("code",[s._v("client-py/src/iotdb/session.py")]),s._v("中(与 Java 版本类似),还提供了一个示例文件"),t("code",[s._v("client-py/src/SessionExample.py")]),s._v("来说明如何使用 Session 模块。请仔细阅读。")]),s._v(" "),t("p",[s._v("另一个简单的例子:")]),s._v(" "),t("div",{staticClass:"language-python line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" iotdb"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("Session "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" Session\n\nip "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"127.0.0.1"')]),s._v("\nport_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6667"')]),s._v("\nusername_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"root"')]),s._v("\npassword_ "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"root"')]),s._v("\nsession "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" Session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("ip"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" port_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" username_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" password_"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nsession"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("open")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("False")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nzone "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" session"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("get_time_zone"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nsession"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("close"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])]),t("h3",{attrs:{id:"测试"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#测试"}},[s._v("#")]),s._v(" 测试")]),s._v(" "),t("p",[s._v("请在"),t("code",[s._v("tests")]),s._v("文件夹中添加自定义测试。")]),s._v(" "),t("p",[s._v("要运行所有的测试,只需在根目录中运行"),t("code",[s._v("pytest .")]),s._v("即可。")]),s._v(" "),t("p",[t("strong",[s._v("注意")]),s._v("一些测试需要在您的系统上使用 docker,因为测试的 IoTDB 实例是使用 "),t("a",{attrs:{href:"https://testcontainers-python.readthedocs.io/en/latest/index.html",target:"_blank",rel:"noopener noreferrer"}},[s._v("testcontainers"),t("OutboundLink")],1),s._v(" 在 docker 容器中启动的。")]),s._v(" "),t("h3",{attrs:{id:"其他工具"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#其他工具"}},[s._v("#")]),s._v(" 其他工具")]),s._v(" "),t("p",[t("a",{attrs:{href:"https://pypi.org/project/black/",target:"_blank",rel:"noopener noreferrer"}},[s._v("black"),t("OutboundLink")],1),s._v(" 和 "),t("a",{attrs:{href:"https://pypi.org/project/flake8/",target:"_blank",rel:"noopener noreferrer"}},[s._v("flake8"),t("OutboundLink")],1),s._v(" 分别用于自动格式化和 linting。\n它们可以通过 "),t("code",[s._v("black .")]),s._v(" 或 "),t("code",[s._v("flake8 .")]),s._v(" 分别运行。")]),s._v(" "),t("h2",{attrs:{id:"发版"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#发版"}},[s._v("#")]),s._v(" 发版")]),s._v(" "),t("p",[s._v("要进行发版,")]),s._v(" "),t("p",[s._v("只需确保您生成了正确的 thrift 代码,")]),s._v(" "),t("p",[s._v("运行了 linting 并进行了自动格式化,")]),s._v(" "),t("p",[s._v("然后,确保所有测试都正常通过(通过"),t("code",[s._v("pytest .")]),s._v("),")]),s._v(" "),t("p",[s._v("最后,您就可以将包发布到 pypi 了。")]),s._v(" "),t("h3",{attrs:{id:"准备您的环境"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#准备您的环境"}},[s._v("#")]),s._v(" 准备您的环境")]),s._v(" "),t("p",[s._v("首先,通过"),t("code",[s._v("pip install -r requirements_dev.txt")]),s._v("安装所有必要的开发依赖。")]),s._v(" "),t("h3",{attrs:{id:"发版-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#发版-2"}},[s._v("#")]),s._v(" 发版")]),s._v(" "),t("p",[s._v("有一个脚本"),t("code",[s._v("release.sh")]),s._v("可以用来执行发版的所有步骤。")]),s._v(" "),t("p",[s._v("这些步骤包括:")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("删除所有临时目录(如果存在)")])]),s._v(" "),t("li",[t("p",[s._v("(重新)通过 mvn 生成所有必须的源代码")])]),s._v(" "),t("li",[t("p",[s._v("运行 linting (flke8)")])]),s._v(" "),t("li",[t("p",[s._v("通过 pytest 运行测试")])]),s._v(" "),t("li",[t("p",[s._v("Build")])]),s._v(" "),t("li",[t("p",[s._v("发布到 pypi")])])])])}),[],!1,null,null,null);t.default=e.exports}}]);