diff --git a/docs/en/14-reference/03-connector/07-python.mdx b/docs/en/14-reference/03-connector/07-python.mdx
index bfbdd929c2..cc5c8f4e69 100644
--- a/docs/en/14-reference/03-connector/07-python.mdx
+++ b/docs/en/14-reference/03-connector/07-python.mdx
@@ -459,6 +459,56 @@ For a more detailed description of the `sql()` method, please refer to [RestClie
+### Schemaless Insert
+
+Connector support schemaless insert.
+
+
+
+
+Simple insert
+
+```python
+{{#include docs/examples/python/schemaless_insert.py}}
+```
+
+Insert with ttl argument
+
+```python
+{{#include docs/examples/python/schemaless_insert_ttl.py}}
+```
+
+Insert with req_id argument
+
+```python
+{{#include docs/examples/python/schemaless_insert_req_id.py}}
+```
+
+
+
+
+
+Simple insert
+
+```python
+{{#include docs/examples/python/schemaless_insert_raw.py}}
+```
+
+Insert with ttl argument
+
+```python
+{{#include docs/examples/python/schemaless_insert_raw_ttl.py}}
+```
+
+Insert with req_id argument
+
+```python
+{{#include docs/examples/python/schemaless_insert_raw_req_id.py}}
+```
+
+
+
+
### Other sample programs
| Example program links | Example program content |
diff --git a/docs/examples/python/schemaless_insert.py b/docs/examples/python/schemaless_insert.py
new file mode 100644
index 0000000000..334a4b728f
--- /dev/null
+++ b/docs/examples/python/schemaless_insert.py
@@ -0,0 +1,21 @@
+import taos
+
+conn = taos.connect()
+dbname = "pytest_line"
+conn.execute("drop database if exists %s" % dbname)
+conn.execute("create database if not exists %s precision 'us'" % dbname)
+conn.select_db(dbname)
+
+lines = [
+ 'st,t1=3i64,t2=4f64,t3="t3" c1=3i64,c3=L"pass",c2=false,c4=4f64 1626006833639000000',
+]
+conn.schemaless_insert(lines, taos.SmlProtocol.LINE_PROTOCOL, taos.SmlPrecision.NOT_CONFIGURED)
+print("inserted")
+
+conn.schemaless_insert(lines, taos.SmlProtocol.LINE_PROTOCOL, taos.SmlPrecision.NOT_CONFIGURED)
+
+result = conn.query("show tables")
+for row in result:
+ print(row)
+
+conn.execute("drop database if exists %s" % dbname)
diff --git a/docs/examples/python/schemaless_insert_raw.py b/docs/examples/python/schemaless_insert_raw.py
new file mode 100644
index 0000000000..0fda7dc505
--- /dev/null
+++ b/docs/examples/python/schemaless_insert_raw.py
@@ -0,0 +1,74 @@
+import taos
+from taos import utils
+from taos import TaosConnection
+from taos.cinterface import *
+from taos.error import OperationalError, SchemalessError
+
+conn = taos.connect()
+dbname = "taos_schemaless_insert"
+try:
+ conn.execute("drop database if exists %s" % dbname)
+
+ if taos.IS_V3:
+ conn.execute("create database if not exists %s schemaless 1 precision 'ns'" % dbname)
+ else:
+ conn.execute("create database if not exists %s update 2 precision 'ns'" % dbname)
+
+ conn.select_db(dbname)
+
+ lines = '''st,t1=3i64,t2=4f64,t3="t3" c1=3i64,c3=L"passit",c2=false,c4=4f64 1626006833639000000
+ st,t1=4i64,t3="t4",t2=5f64,t4=5f64 c1=3i64,c3=L"passitagin, abc",c2=true,c4=5f64,c5=5f64,c6=7u64 1626006933640000000
+ stf,t1=4i64,t3="t4",t2=5f64,t4=5f64 c1=3i64,c3=L"passitagin_stf",c2=false,c5=5f64,c6=7u64 1626006933641000000'''
+
+ res = conn.schemaless_insert_raw(lines, 1, 0)
+ print("affected rows: ", res)
+ assert (res == 3)
+
+ lines = '''stf,t1=5i64,t3="t4",t2=5f64,t4=5f64 c1=3i64,c3=L"passitagin_stf",c2=false,c5=5f64,c6=7u64 1626006933641000000'''
+ res = conn.schemaless_insert_raw(lines, 1, 0)
+ print("affected rows: ", res)
+ assert (res == 1)
+
+ result = conn.query("select * from st")
+ dict2 = result.fetch_all_into_dict()
+ print(dict2)
+ print(result.row_count)
+
+ all = result.rows_iter()
+ for row in all:
+ print(row)
+ result.close()
+ assert (result.row_count == 2)
+
+ # error test
+ lines = ''',t1=3i64,t2=4f64,t3="t3" c1=3i64,c3=L"passit",c2=false,c4=4f64 1626006833639000000'''
+ try:
+ res = conn.schemaless_insert_raw(lines, 1, 0)
+ print(res)
+ # assert(False)
+ except SchemalessError as err:
+ print('**** error: ', err)
+ # assert (err.msg == 'Invalid data format')
+
+ result = conn.query("select * from st")
+ print(result.row_count)
+ all = result.rows_iter()
+ for row in all:
+ print(row)
+ result.close()
+
+ conn.execute("drop database if exists %s" % dbname)
+ conn.close()
+except InterfaceError as err:
+ conn.execute("drop database if exists %s" % dbname)
+ conn.close()
+ print(err)
+except SchemalessError as err:
+ conn.execute("drop database if exists %s" % dbname)
+ conn.close()
+ print(err)
+except Exception as err:
+ conn.execute("drop database if exists %s" % dbname)
+ conn.close()
+ print(err)
+ raise err
diff --git a/docs/examples/python/schemaless_insert_raw_req_id.py b/docs/examples/python/schemaless_insert_raw_req_id.py
new file mode 100644
index 0000000000..606e510986
--- /dev/null
+++ b/docs/examples/python/schemaless_insert_raw_req_id.py
@@ -0,0 +1,76 @@
+import taos
+from taos import utils
+from taos import TaosConnection
+from taos.cinterface import *
+from taos.error import OperationalError, SchemalessError
+
+conn = taos.connect()
+dbname = "taos_schemaless_insert"
+try:
+ conn.execute("drop database if exists %s" % dbname)
+
+ if taos.IS_V3:
+ conn.execute("create database if not exists %s schemaless 1 precision 'ns'" % dbname)
+ else:
+ conn.execute("create database if not exists %s update 2 precision 'ns'" % dbname)
+
+ conn.select_db(dbname)
+
+ lines = '''st,t1=3i64,t2=4f64,t3="t3" c1=3i64,c3=L"passit",c2=false,c4=4f64 1626006833639000000
+ st,t1=4i64,t3="t4",t2=5f64,t4=5f64 c1=3i64,c3=L"passitagin, abc",c2=true,c4=5f64,c5=5f64,c6=7u64 1626006933640000000
+ stf,t1=4i64,t3="t4",t2=5f64,t4=5f64 c1=3i64,c3=L"passitagin_stf",c2=false,c5=5f64,c6=7u64 1626006933641000000'''
+
+ ttl = 1000
+ req_id = utils.gen_req_id()
+ res = conn.schemaless_insert_raw(lines, 1, 0, ttl=ttl, req_id=req_id)
+ print("affected rows: ", res)
+ assert (res == 3)
+
+ lines = '''stf,t1=5i64,t3="t4",t2=5f64,t4=5f64 c1=3i64,c3=L"passitagin_stf",c2=false,c5=5f64,c6=7u64 1626006933641000000'''
+ ttl = 1000
+ req_id = utils.gen_req_id()
+ res = conn.schemaless_insert_raw(lines, 1, 0, ttl=ttl, req_id=req_id)
+ print("affected rows: ", res)
+ assert (res == 1)
+
+ result = conn.query("select * from st")
+ dict2 = result.fetch_all_into_dict()
+ print(dict2)
+ print(result.row_count)
+
+ all = result.rows_iter()
+ for row in all:
+ print(row)
+ result.close()
+ assert (result.row_count == 2)
+
+ # error test
+ lines = ''',t1=3i64,t2=4f64,t3="t3" c1=3i64,c3=L"passit",c2=false,c4=4f64 1626006833639000000'''
+ try:
+ ttl = 1000
+ req_id = utils.gen_req_id()
+ res = conn.schemaless_insert_raw(lines, 1, 0, ttl=ttl, req_id=req_id)
+ print(res)
+ # assert(False)
+ except SchemalessError as err:
+ print('**** error: ', err)
+ # assert (err.msg == 'Invalid data format')
+
+ result = conn.query("select * from st")
+ print(result.row_count)
+ all = result.rows_iter()
+ for row in all:
+ print(row)
+ result.close()
+
+ conn.execute("drop database if exists %s" % dbname)
+ conn.close()
+except InterfaceError as err:
+ conn.execute("drop database if exists %s" % dbname)
+ conn.close()
+ print(err)
+except Exception as err:
+ conn.execute("drop database if exists %s" % dbname)
+ conn.close()
+ print(err)
+ raise err
diff --git a/docs/examples/python/schemaless_insert_raw_ttl.py b/docs/examples/python/schemaless_insert_raw_ttl.py
new file mode 100644
index 0000000000..cf57792534
--- /dev/null
+++ b/docs/examples/python/schemaless_insert_raw_ttl.py
@@ -0,0 +1,73 @@
+import taos
+from taos import utils
+from taos import TaosConnection
+from taos.cinterface import *
+from taos.error import OperationalError, SchemalessError
+
+conn = taos.connect()
+dbname = "taos_schemaless_insert"
+try:
+ conn.execute("drop database if exists %s" % dbname)
+
+ if taos.IS_V3:
+ conn.execute("create database if not exists %s schemaless 1 precision 'ns'" % dbname)
+ else:
+ conn.execute("create database if not exists %s update 2 precision 'ns'" % dbname)
+
+ conn.select_db(dbname)
+
+ lines = '''st,t1=3i64,t2=4f64,t3="t3" c1=3i64,c3=L"passit",c2=false,c4=4f64 1626006833639000000
+ st,t1=4i64,t3="t4",t2=5f64,t4=5f64 c1=3i64,c3=L"passitagin, abc",c2=true,c4=5f64,c5=5f64,c6=7u64 1626006933640000000
+ stf,t1=4i64,t3="t4",t2=5f64,t4=5f64 c1=3i64,c3=L"passitagin_stf",c2=false,c5=5f64,c6=7u64 1626006933641000000'''
+
+ ttl = 1000
+ res = conn.schemaless_insert_raw(lines, 1, 0, ttl=ttl)
+ print("affected rows: ", res)
+ assert (res == 3)
+
+ lines = '''stf,t1=5i64,t3="t4",t2=5f64,t4=5f64 c1=3i64,c3=L"passitagin_stf",c2=false,c5=5f64,c6=7u64 1626006933641000000'''
+ ttl = 1000
+ res = conn.schemaless_insert_raw(lines, 1, 0, ttl=ttl)
+ print("affected rows: ", res)
+ assert (res == 1)
+
+ result = conn.query("select * from st")
+ dict2 = result.fetch_all_into_dict()
+ print(dict2)
+ print(result.row_count)
+
+ all = result.rows_iter()
+ for row in all:
+ print(row)
+ result.close()
+ assert (result.row_count == 2)
+
+ # error test
+ lines = ''',t1=3i64,t2=4f64,t3="t3" c1=3i64,c3=L"passit",c2=false,c4=4f64 1626006833639000000'''
+ try:
+ ttl = 1000
+ res = conn.schemaless_insert_raw(lines, 1, 0, ttl=ttl)
+ print(res)
+ # assert(False)
+ except SchemalessError as err:
+ print('**** error: ', err)
+ # assert (err.msg == 'Invalid data format')
+
+ result = conn.query("select * from st")
+ print(result.row_count)
+ all = result.rows_iter()
+ for row in all:
+ print(row)
+ result.close()
+
+ conn.execute("drop database if exists %s" % dbname)
+ conn.close()
+except InterfaceError as err:
+ conn.execute("drop database if exists %s" % dbname)
+ conn.close()
+ print(err)
+except Exception as err:
+ conn.execute("drop database if exists %s" % dbname)
+ conn.close()
+ print(err)
+ raise err
diff --git a/docs/examples/python/schemaless_insert_req_id.py b/docs/examples/python/schemaless_insert_req_id.py
new file mode 100644
index 0000000000..ee1472db69
--- /dev/null
+++ b/docs/examples/python/schemaless_insert_req_id.py
@@ -0,0 +1,22 @@
+import taos
+from taos import SmlProtocol, SmlPrecision
+
+conn = taos.connect()
+dbname = "pytest_line"
+conn.execute("drop database if exists %s" % dbname)
+conn.execute("create database if not exists %s precision 'us'" % dbname)
+conn.select_db(dbname)
+
+lines = [
+ 'st,t1=3i64,t2=4f64,t3="t3" c1=3i64,c3=L"pass",c2=false,c4=4f64 1626006833639000000',
+]
+conn.schemaless_insert(lines, taos.SmlProtocol.LINE_PROTOCOL, taos.SmlPrecision.NOT_CONFIGURED, req_id=1)
+print("inserted")
+
+conn.schemaless_insert(lines, taos.SmlProtocol.LINE_PROTOCOL, taos.SmlPrecision.NOT_CONFIGURED, req_id=2)
+
+result = conn.query("show tables")
+for row in result:
+ print(row)
+
+conn.execute("drop database if exists %s" % dbname)
diff --git a/docs/examples/python/schemaless_insert_ttl.py b/docs/examples/python/schemaless_insert_ttl.py
new file mode 100644
index 0000000000..85050439f2
--- /dev/null
+++ b/docs/examples/python/schemaless_insert_ttl.py
@@ -0,0 +1,22 @@
+import taos
+from taos import SmlProtocol, SmlPrecision
+
+conn = taos.connect()
+dbname = "pytest_line"
+conn.execute("drop database if exists %s" % dbname)
+conn.execute("create database if not exists %s precision 'us'" % dbname)
+conn.select_db(dbname)
+
+lines = [
+ 'st,t1=3i64,t2=4f64,t3="t3" c1=3i64,c3=L"pass",c2=false,c4=4f64 1626006833639000000',
+]
+conn.schemaless_insert(lines, taos.SmlProtocol.LINE_PROTOCOL, taos.SmlPrecision.NOT_CONFIGURED, ttl=1000)
+print("inserted")
+
+conn.schemaless_insert(lines, taos.SmlProtocol.LINE_PROTOCOL, taos.SmlPrecision.NOT_CONFIGURED, ttl=1000)
+
+result = conn.query("show tables")
+for row in result:
+ print(row)
+
+conn.execute("drop database if exists %s" % dbname)
diff --git a/docs/zh/08-connector/30-python.mdx b/docs/zh/08-connector/30-python.mdx
index 5395610df3..1cff142e11 100644
--- a/docs/zh/08-connector/30-python.mdx
+++ b/docs/zh/08-connector/30-python.mdx
@@ -484,6 +484,56 @@ TaosCursor 类使用原生连接进行写入、查询操作。在客户端多线
+### 无模式写入
+
+连接器支持无模式写入功能。
+
+
+
+
+简单写入
+
+```python
+{{#include docs/examples/python/schemaless_insert.py}}
+```
+
+带有 ttl 参数的写入
+
+```python
+{{#include docs/examples/python/schemaless_insert_ttl.py}}
+```
+
+带有 req_id 参数的写入
+
+```python
+{{#include docs/examples/python/schemaless_insert_req_id.py}}
+```
+
+
+
+
+
+简单写入
+
+```python
+{{#include docs/examples/python/schemaless_insert_raw.py}}
+```
+
+带有 ttl 参数的写入
+
+```python
+{{#include docs/examples/python/schemaless_insert_raw_ttl.py}}
+```
+
+带有 req_id 参数的写入
+
+```python
+{{#include docs/examples/python/schemaless_insert_raw_req_id.py}}
+```
+
+
+
+
### 其它示例程序
| 示例程序链接 | 示例程序内容 |