diff --git a/documentation20/cn/08.connector/docs.md b/documentation20/cn/08.connector/docs.md index ee5d8e9f825e12bd65331736ecb23db62e5fe388..ecd9770e6a52ce06440d4788daaa527b194b5fef 100644 --- a/documentation20/cn/08.connector/docs.md +++ b/documentation20/cn/08.connector/docs.md @@ -749,6 +749,49 @@ conn.execute("drop database pytest") conn.close() ``` +#### JSON 类型 + +从 `taospy` `v2.2.0` 开始,Python连接器开始支持 JSON 数据类型的标签(TDengine版本要求 Beta 版 2.3.5+, 稳定版 2.4.0+)。 + +创建一个使用JSON类型标签的超级表及其子表: + +```python +# encoding:UTF-8 +import taos + +conn = taos.connect() +conn.execute("create database if not exists py_test_json_type") +conn.execute("use py_test_json_type") + +conn.execute("create stable s1 (ts timestamp, v1 int) tags (info json)") +conn.execute("create table s1_1 using s1 tags ('{\"k1\": \"v1\"}')") +``` + +查询子表标签及表名: + +```python +tags = conn.query("select info, tbname from s1").fetch_all_into_dict() +tags +``` + +`tags` 内容为: + +```python +[{'info': '{"k1":"v1"}', 'tbname': 's1_1'}] +``` + +获取 JSON 中某值: + +```python +k1 = conn.query("select info->'k1' as k1 from s1").fetch_all_into_dict() +""" +>>> k1 +[{'k1': '"v1"'}] +""" +``` + +更多JSON类型的操作方式请参考 [JSON 类型使用说明](https://www.taosdata.com/cn/documentation/taos-sql)。 + #### 关于纳秒 (nanosecond) 在 Python 连接器中的说明 由于目前 Python 对 nanosecond 支持的不完善(参见链接 1. 2. ),目前的实现方式是在 nanosecond 精度时返回整数,而不是 ms 和 us 返回的 datetime 类型,应用开发者需要自行处理,建议使用 pandas 的 to_datetime()。未来如果 Python 正式完整支持了纳秒,涛思数据可能会修改相关接口。 diff --git a/documentation20/cn/12.taos-sql/docs.md b/documentation20/cn/12.taos-sql/docs.md index f045613165fe7329bd876639eb1967047b219ba1..d6888bd02435f691ed6847b3d84fbd70e2a9c655 100755 --- a/documentation20/cn/12.taos-sql/docs.md +++ b/documentation20/cn/12.taos-sql/docs.md @@ -59,6 +59,7 @@ TDengine 缺省的时间戳是毫秒精度,但通过在 CREATE DATABASE 时传 **Tips**: 1. TDengine 对 SQL 语句中的英文字符不区分大小写,自动转化为小写执行。因此用户大小写敏感的字符串及密码,需要使用单引号将字符串引起来。 2. **注意**,虽然 Binary 类型在底层存储上支持字节型的二进制字符,但不同编程语言对二进制数据的处理方式并不保证一致,因此建议在 Binary 类型中只存储 ASCII 可见字符,而避免存储不可见字符。多字节的数据,例如中文字符,则需要使用 nchar 类型进行保存。如果强行使用 Binary 类型保存中文字符,虽然有时也能正常读写,但并不带有字符集信息,很容易出现数据乱码甚至数据损坏等情况。 +3. **注意**,SQL语句中的数值类型将依据是否存在小数点,或使用科学计数法表示,来判断数值类型是否为整型或者浮点型,因此在使用时要注意相应类型越界的情况。例如,9999999999999999999会认为超过长整型的上边界而溢出,而9999999999999999999.0会被认为是有效的浮点数。 ## 数据库管理 diff --git a/documentation20/en/08.connector/docs.md b/documentation20/en/08.connector/docs.md index bc1197d2ed3c4c566e9618b505183123b1e31eb9..f8b444281587e03bb0b143d5ecd1c41abed9dd64 100644 --- a/documentation20/en/08.connector/docs.md +++ b/documentation20/en/08.connector/docs.md @@ -575,6 +575,49 @@ Close connection. conn.close() ``` +#### JSON Type Support + +Python connector `taospy` starts supporting JSON type as tags since `v2.2.0` (requires TDengine beta v2.3.5+, or stable v2.4.0+). + +Create stable and table with JSON tag. + +```python +# encoding:UTF-8 +import taos + +conn = taos.connect() +conn.execute("create database if not exists py_test_json_type") +conn.execute("use py_test_json_type") + +conn.execute("create stable s1 (ts timestamp, v1 int) tags (info json)") +conn.execute("create table s1_1 using s1 tags ('{\"k1\": \"v1\"}')") +``` + +Query JSON tag and table name from a stable. + +```python +tags = conn.query("select info, tbname from s1").fetch_all_into_dict() +tags +``` + +The `tags` value is: + +```python +[{'info': '{"k1":"v1"}', 'tbname': 's1_1'}] +``` + +To get value from JSON tag by key: + +```python +k1 = conn.query("select info->'k1' as k1 from s1").fetch_all_into_dict() +""" +>>> k1 +[{'k1': '"v1"'}] +""" +``` + +Refer to [JSON type instructions](https://www.taosdata.com/en/documentation/taos-sql) for more usage of JSON type. + #### Using nanosecond in Python connector So far Python still does not completely support nanosecond type. Please refer to the link 1 and 2. The implementation of the python connector is to return an integer number for nanosecond value rather than datatime type as what ms and us do. The developer needs to handle it themselves. We recommend using pandas to_datetime() function. If Python officially support nanosecond in the future, TAOS Data might be possible to change the interface accordingly, which mean the application need change too. diff --git a/documentation20/en/12.taos-sql/docs.md b/documentation20/en/12.taos-sql/docs.md index 60f3ad44c62f9ba1123f8920ef626baa58cc1bb0..5cac5a78c79265b49b42225963cd097e49d60dbb 100755 --- a/documentation20/en/12.taos-sql/docs.md +++ b/documentation20/en/12.taos-sql/docs.md @@ -60,6 +60,7 @@ In TDengine, the following 10 data types can be used in data model of an ordinar 1. TDengine is case-insensitive to English characters in SQL statements and automatically converts them to lowercase for execution. Therefore, the user's case-sensitive strings and passwords need to be enclosed in single quotation marks. 2. Avoid using BINARY type to save non-ASCII type strings, which will easily lead to errors such as garbled data. The correct way is to use NCHAR type to save Chinese characters. +3. The numerical values in SQL statements are treated as floating or integer numbers, depends on if the value contains decimal point or is in scientific notation format. Therefore, caution is needed since overflow might happen for corresponding data types. E.g., 9999999999999999999 is overflowed as the number is greater than the largest integer number. However, 9999999999999999999.0 is treated as a valid floating number. ## Database Management