Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
70d751ba
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
70d751ba
编写于
2月 20, 2021
作者:
P
Ping Xiao
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' into xiaoping/add_test_case
上级
1785c815
e9840fe3
变更
23
展开全部
显示空白变更内容
内联
并排
Showing
23 changed file
with
676 addition
and
255 deletion
+676
-255
src/connector/python/linux/python2/taos/cinterface.py
src/connector/python/linux/python2/taos/cinterface.py
+8
-8
src/connector/python/linux/python2/taos/constants.py
src/connector/python/linux/python2/taos/constants.py
+4
-4
src/connector/python/linux/python3/taos/cinterface.py
src/connector/python/linux/python3/taos/cinterface.py
+8
-8
src/connector/python/linux/python3/taos/constants.py
src/connector/python/linux/python3/taos/constants.py
+4
-4
src/connector/python/osx/python3/taos/cinterface.py
src/connector/python/osx/python3/taos/cinterface.py
+8
-8
src/connector/python/osx/python3/taos/constants.py
src/connector/python/osx/python3/taos/constants.py
+4
-4
src/connector/python/windows/python2/taos/__init__.py
src/connector/python/windows/python2/taos/__init__.py
+1
-0
src/connector/python/windows/python2/taos/cinterface.py
src/connector/python/windows/python2/taos/cinterface.py
+235
-70
src/connector/python/windows/python2/taos/connection.py
src/connector/python/windows/python2/taos/connection.py
+13
-4
src/connector/python/windows/python2/taos/constants.py
src/connector/python/windows/python2/taos/constants.py
+9
-0
src/connector/python/windows/python2/taos/cursor.py
src/connector/python/windows/python2/taos/cursor.py
+27
-19
src/connector/python/windows/python2/taos/dbapi.py
src/connector/python/windows/python2/taos/dbapi.py
+7
-1
src/connector/python/windows/python2/taos/error.py
src/connector/python/windows/python2/taos/error.py
+13
-4
src/connector/python/windows/python2/taos/subscription.py
src/connector/python/windows/python2/taos/subscription.py
+13
-8
src/connector/python/windows/python3/taos/__init__.py
src/connector/python/windows/python3/taos/__init__.py
+1
-0
src/connector/python/windows/python3/taos/cinterface.py
src/connector/python/windows/python3/taos/cinterface.py
+234
-71
src/connector/python/windows/python3/taos/connection.py
src/connector/python/windows/python3/taos/connection.py
+13
-4
src/connector/python/windows/python3/taos/constants.py
src/connector/python/windows/python3/taos/constants.py
+9
-0
src/connector/python/windows/python3/taos/cursor.py
src/connector/python/windows/python3/taos/cursor.py
+28
-21
src/connector/python/windows/python3/taos/dbapi.py
src/connector/python/windows/python3/taos/dbapi.py
+7
-1
src/connector/python/windows/python3/taos/error.py
src/connector/python/windows/python3/taos/error.py
+13
-4
src/connector/python/windows/python3/taos/subscription.py
src/connector/python/windows/python3/taos/subscription.py
+13
-8
tests/pytest/insert/basic_unsigned.py
tests/pytest/insert/basic_unsigned.py
+4
-4
未找到文件。
src/connector/python/linux/python2/taos/cinterface.py
浏览文件 @
70d751ba
...
...
@@ -67,13 +67,13 @@ def _crow_tinyint_unsigned_to_python(
return
[
None
if
ele
==
FieldType
.
C_TINYINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_byte
))[
ctypes
.
c_
u
byte
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_TINYINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_byte
))[
ctypes
.
c_
u
byte
))[
:
abs
(
num_of_rows
)]]
...
...
@@ -102,13 +102,13 @@ def _crow_smallint_unsigned_to_python(
return
[
None
if
ele
==
FieldType
.
C_SMALLINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_short
))[
ctypes
.
c_
u
short
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_SMALLINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_short
))[
ctypes
.
c_
u
short
))[
:
abs
(
num_of_rows
)]]
...
...
@@ -130,13 +130,13 @@ def _crow_int_unsigned_to_python(data, num_of_rows, nbytes=None, micro=False):
return
[
None
if
ele
==
FieldType
.
C_INT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_int
))[
ctypes
.
c_
u
int
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_INT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_int
))[
ctypes
.
c_
u
int
))[
:
abs
(
num_of_rows
)]]
...
...
@@ -162,13 +162,13 @@ def _crow_bigint_unsigned_to_python(
return
[
None
if
ele
==
FieldType
.
C_BIGINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_long
))[
ctypes
.
c_
u
long
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_BIGINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_long
))[
ctypes
.
c_
u
long
))[
:
abs
(
num_of_rows
)]]
...
...
src/connector/python/linux/python2/taos/constants.py
浏览文件 @
70d751ba
...
...
@@ -19,10 +19,10 @@ class FieldType(object):
C_BINARY
=
8
C_TIMESTAMP
=
9
C_NCHAR
=
10
C_TINYINT_UNSIGNED
=
1
2
C_SMALLINT_UNSIGNED
=
1
3
C_INT_UNSIGNED
=
1
4
C_BIGINT_UNSIGNED
=
1
5
C_TINYINT_UNSIGNED
=
1
1
C_SMALLINT_UNSIGNED
=
1
2
C_INT_UNSIGNED
=
1
3
C_BIGINT_UNSIGNED
=
1
4
# NULL value definition
# NOTE: These values should change according to C definition in tsdb.h
C_BOOL_NULL
=
0x02
...
...
src/connector/python/linux/python3/taos/cinterface.py
浏览文件 @
70d751ba
...
...
@@ -67,13 +67,13 @@ def _crow_tinyint_unsigned_to_python(
return
[
None
if
ele
==
FieldType
.
C_TINYINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_byte
))[
ctypes
.
c_
u
byte
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_TINYINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_byte
))[
ctypes
.
c_
u
byte
))[
:
abs
(
num_of_rows
)]]
...
...
@@ -102,13 +102,13 @@ def _crow_smallint_unsigned_to_python(
return
[
None
if
ele
==
FieldType
.
C_SMALLINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_short
))[
ctypes
.
c_
u
short
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_SMALLINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_short
))[
ctypes
.
c_
u
short
))[
:
abs
(
num_of_rows
)]]
...
...
@@ -130,13 +130,13 @@ def _crow_int_unsigned_to_python(data, num_of_rows, nbytes=None, micro=False):
return
[
None
if
ele
==
FieldType
.
C_INT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_int
))[
ctypes
.
c_
u
int
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_INT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_int
))[
ctypes
.
c_
u
int
))[
:
abs
(
num_of_rows
)]]
...
...
@@ -162,13 +162,13 @@ def _crow_bigint_unsigned_to_python(
return
[
None
if
ele
==
FieldType
.
C_BIGINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_long
))[
ctypes
.
c_
u
long
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_BIGINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_long
))[
ctypes
.
c_
u
long
))[
:
abs
(
num_of_rows
)]]
...
...
src/connector/python/linux/python3/taos/constants.py
浏览文件 @
70d751ba
...
...
@@ -19,10 +19,10 @@ class FieldType(object):
C_BINARY
=
8
C_TIMESTAMP
=
9
C_NCHAR
=
10
C_TINYINT_UNSIGNED
=
1
2
C_SMALLINT_UNSIGNED
=
1
3
C_INT_UNSIGNED
=
1
4
C_BIGINT_UNSIGNED
=
1
5
C_TINYINT_UNSIGNED
=
1
1
C_SMALLINT_UNSIGNED
=
1
2
C_INT_UNSIGNED
=
1
3
C_BIGINT_UNSIGNED
=
1
4
# NULL value definition
# NOTE: These values should change according to C definition in tsdb.h
C_BOOL_NULL
=
0x02
...
...
src/connector/python/osx/python3/taos/cinterface.py
浏览文件 @
70d751ba
...
...
@@ -67,13 +67,13 @@ def _crow_tinyint_unsigned_to_python(
return
[
None
if
ele
==
FieldType
.
C_TINYINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_byte
))[
ctypes
.
c_
u
byte
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_TINYINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_byte
))[
ctypes
.
c_
u
byte
))[
:
abs
(
num_of_rows
)]]
...
...
@@ -102,13 +102,13 @@ def _crow_smallint_unsigned_to_python(
return
[
None
if
ele
==
FieldType
.
C_SMALLINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_short
))[
ctypes
.
c_
u
short
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_SMALLINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_short
))[
ctypes
.
c_
u
short
))[
:
abs
(
num_of_rows
)]]
...
...
@@ -130,13 +130,13 @@ def _crow_int_unsigned_to_python(data, num_of_rows, nbytes=None, micro=False):
return
[
None
if
ele
==
FieldType
.
C_INT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_int
))[
ctypes
.
c_
u
int
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_INT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_int
))[
ctypes
.
c_
u
int
))[
:
abs
(
num_of_rows
)]]
...
...
@@ -162,13 +162,13 @@ def _crow_bigint_unsigned_to_python(
return
[
None
if
ele
==
FieldType
.
C_BIGINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_long
))[
ctypes
.
c_
u
long
))[
:
abs
(
num_of_rows
)]]
else
:
return
[
None
if
ele
==
FieldType
.
C_BIGINT_UNSIGNED_NULL
else
ele
for
ele
in
ctypes
.
cast
(
data
,
ctypes
.
POINTER
(
ctypes
.
c_long
))[
ctypes
.
c_
u
long
))[
:
abs
(
num_of_rows
)]]
...
...
src/connector/python/osx/python3/taos/constants.py
浏览文件 @
70d751ba
...
...
@@ -19,10 +19,10 @@ class FieldType(object):
C_BINARY
=
8
C_TIMESTAMP
=
9
C_NCHAR
=
10
C_TINYINT_UNSIGNED
=
1
2
C_SMALLINT_UNSIGNED
=
1
3
C_INT_UNSIGNED
=
1
4
C_BIGINT_UNSIGNED
=
1
5
C_TINYINT_UNSIGNED
=
1
1
C_SMALLINT_UNSIGNED
=
1
2
C_INT_UNSIGNED
=
1
3
C_BIGINT_UNSIGNED
=
1
4
# NULL value definition
# NOTE: These values should change according to C definition in tsdb.h
C_BOOL_NULL
=
0x02
...
...
src/connector/python/windows/python2/taos/__init__.py
浏览文件 @
70d751ba
...
...
@@ -8,6 +8,7 @@ paramstyle = 'pyformat'
__all__
=
[
'connection'
,
'cursor'
]
def
connect
(
*
args
,
**
kwargs
):
""" Function to return a TDengine connector object
...
...
src/connector/python/windows/python2/taos/cinterface.py
浏览文件 @
70d751ba
此差异已折叠。
点击以展开。
src/connector/python/windows/python2/taos/connection.py
浏览文件 @
70d751ba
...
...
@@ -2,9 +2,11 @@ from .cursor import TDengineCursor
from
.subscription
import
TDengineSubscription
from
.cinterface
import
CTaosInterface
class
TDengineConnection
(
object
):
""" TDengine connection object
"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
self
.
_conn
=
None
self
.
_host
=
None
...
...
@@ -44,7 +46,12 @@ class TDengineConnection(object):
self
.
_config
=
kwargs
[
'config'
]
self
.
_chandle
=
CTaosInterface
(
self
.
_config
)
self
.
_conn
=
self
.
_chandle
.
connect
(
self
.
_host
,
self
.
_user
,
self
.
_password
,
self
.
_database
,
self
.
_port
)
self
.
_conn
=
self
.
_chandle
.
connect
(
self
.
_host
,
self
.
_user
,
self
.
_password
,
self
.
_database
,
self
.
_port
)
def
close
(
self
):
"""Close current connection.
...
...
@@ -56,7 +63,8 @@ class TDengineConnection(object):
"""
if
self
.
_conn
is
None
:
return
None
sub
=
CTaosInterface
.
subscribe
(
self
.
_conn
,
restart
,
topic
,
sql
,
interval
)
sub
=
CTaosInterface
.
subscribe
(
self
.
_conn
,
restart
,
topic
,
sql
,
interval
)
return
TDengineSubscription
(
sub
)
def
cursor
(
self
):
...
...
@@ -81,6 +89,7 @@ class TDengineConnection(object):
"""
pass
if
__name__
==
"__main__"
:
conn
=
TDengineConnection
(
host
=
'192.168.1.107'
)
conn
.
close
()
...
...
src/connector/python/windows/python2/taos/constants.py
浏览文件 @
70d751ba
...
...
@@ -3,6 +3,7 @@
from
.dbapi
import
*
class
FieldType
(
object
):
"""TDengine Field Types
"""
...
...
@@ -18,13 +19,21 @@ class FieldType(object):
C_BINARY
=
8
C_TIMESTAMP
=
9
C_NCHAR
=
10
C_TINYINT_UNSIGNED
=
11
C_SMALLINT_UNSIGNED
=
12
C_INT_UNSIGNED
=
13
C_BIGINT_UNSIGNED
=
14
# NULL value definition
# NOTE: These values should change according to C definition in tsdb.h
C_BOOL_NULL
=
0x02
C_TINYINT_NULL
=
-
128
C_TINYINT_UNSIGNED_NULL
=
255
C_SMALLINT_NULL
=
-
32768
C_SMALLINT_UNSIGNED_NULL
=
65535
C_INT_NULL
=
-
2147483648
C_INT_UNSIGNED_NULL
=
4294967295
C_BIGINT_NULL
=
-
9223372036854775808
C_BIGINT_UNSIGNED_NULL
=
18446744073709551615
C_FLOAT_NULL
=
float
(
'nan'
)
C_DOUBLE_NULL
=
float
(
'nan'
)
C_BINARY_NULL
=
bytearray
([
int
(
'0xff'
,
16
)])
...
...
src/connector/python/windows/python2/taos/cursor.py
浏览文件 @
70d751ba
...
...
@@ -5,6 +5,7 @@ import threading
# querySeqNum = 0
class
TDengineCursor
(
object
):
"""Database cursor which is used to manage the context of a fetch operation.
...
...
@@ -50,7 +51,8 @@ class TDengineCursor(object):
raise
OperationalError
(
"Invalid use of fetch iterator"
)
if
self
.
_block_rows
<=
self
.
_block_iter
:
block
,
self
.
_block_rows
=
CTaosInterface
.
fetchRow
(
self
.
_result
,
self
.
_fields
)
block
,
self
.
_block_rows
=
CTaosInterface
.
fetchRow
(
self
.
_result
,
self
.
_fields
)
if
self
.
_block_rows
==
0
:
raise
StopIteration
self
.
_block
=
list
(
map
(
tuple
,
zip
(
*
block
)))
...
...
@@ -117,8 +119,9 @@ class TDengineCursor(object):
errno
=
CTaosInterface
.
libtaos
.
taos_errno
(
self
.
_result
)
if
errno
==
0
:
if
CTaosInterface
.
fieldsCount
(
self
.
_result
)
==
0
:
self
.
_affected_rows
+=
CTaosInterface
.
affectedRows
(
self
.
_result
)
return
CTaosInterface
.
affectedRows
(
self
.
_result
)
self
.
_affected_rows
+=
CTaosInterface
.
affectedRows
(
self
.
_result
)
return
CTaosInterface
.
affectedRows
(
self
.
_result
)
else
:
self
.
_fields
=
CTaosInterface
.
useResult
(
self
.
_result
)
return
self
.
_handle_result
()
...
...
@@ -147,10 +150,13 @@ class TDengineCursor(object):
buffer
=
[[]
for
i
in
range
(
len
(
self
.
_fields
))]
self
.
_rowcount
=
0
while
True
:
block
,
num_of_fields
=
CTaosInterface
.
fetchRow
(
self
.
_result
,
self
.
_fields
)
block
,
num_of_fields
=
CTaosInterface
.
fetchRow
(
self
.
_result
,
self
.
_fields
)
errno
=
CTaosInterface
.
libtaos
.
taos_errno
(
self
.
_result
)
if
errno
!=
0
:
raise
ProgrammingError
(
CTaosInterface
.
errStr
(
self
.
_result
),
errno
)
raise
ProgrammingError
(
CTaosInterface
.
errStr
(
self
.
_result
),
errno
)
if
num_of_fields
==
0
:
break
self
.
_rowcount
+=
num_of_fields
...
...
@@ -165,20 +171,21 @@ class TDengineCursor(object):
buffer
=
[[]
for
i
in
range
(
len
(
self
.
_fields
))]
self
.
_rowcount
=
0
while
True
:
block
,
num_of_fields
=
CTaosInterface
.
fetchBlock
(
self
.
_result
,
self
.
_fields
)
block
,
num_of_fields
=
CTaosInterface
.
fetchBlock
(
self
.
_result
,
self
.
_fields
)
errno
=
CTaosInterface
.
libtaos
.
taos_errno
(
self
.
_result
)
if
errno
!=
0
:
raise
ProgrammingError
(
CTaosInterface
.
errStr
(
self
.
_result
),
errno
)
if
num_of_fields
==
0
:
break
raise
ProgrammingError
(
CTaosInterface
.
errStr
(
self
.
_result
),
errno
)
if
num_of_fields
==
0
:
break
self
.
_rowcount
+=
num_of_fields
for
i
in
range
(
len
(
self
.
_fields
)):
buffer
[
i
].
extend
(
block
[
i
])
return
list
(
map
(
tuple
,
zip
(
*
buffer
)))
def
nextset
(
self
):
"""
"""
...
...
@@ -209,6 +216,7 @@ class TDengineCursor(object):
"""
self
.
_description
=
[]
for
ele
in
self
.
_fields
:
self
.
_description
.
append
((
ele
[
'name'
],
ele
[
'type'
],
None
,
None
,
None
,
None
,
False
))
self
.
_description
.
append
(
(
ele
[
'name'
],
ele
[
'type'
],
None
,
None
,
None
,
None
,
False
))
return
self
.
_result
src/connector/python/windows/python2/taos/dbapi.py
浏览文件 @
70d751ba
...
...
@@ -4,6 +4,7 @@
import
time
import
datetime
class
DBAPITypeObject
(
object
):
def
__init__
(
self
,
*
values
):
self
.
values
=
values
...
...
@@ -16,19 +17,24 @@ class DBAPITypeObject(object):
else
:
return
-
1
Date
=
datetime
.
date
Time
=
datetime
.
time
Timestamp
=
datetime
.
datetime
def
DataFromTicks
(
ticks
):
return
Date
(
*
time
.
localtime
(
ticks
)[:
3
])
def
TimeFromTicks
(
ticks
):
return
Time
(
*
time
.
localtime
(
ticks
)[
3
:
6
])
def
TimestampFromTicks
(
ticks
):
return
Timestamp
(
*
time
.
localtime
(
ticks
)[:
6
])
Binary
=
bytes
# STRING = DBAPITypeObject(*constants.FieldType.get_string_types())
...
...
src/connector/python/windows/python2/taos/error.py
浏览文件 @
70d751ba
"""Python exceptions
"""
class
Error
(
Exception
):
def
__init__
(
self
,
msg
=
None
,
errno
=
None
):
self
.
msg
=
msg
...
...
@@ -10,26 +11,31 @@ class Error(Exception):
def
__str__
(
self
):
return
self
.
_full_msg
class
Warning
(
Exception
):
"""Exception raised for important warnings like data truncations while inserting.
"""
pass
class
InterfaceError
(
Error
):
"""Exception raised for errors that are related to the database interface rather than the database itself.
"""
pass
class
DatabaseError
(
Error
):
"""Exception raised for errors that are related to the database.
"""
pass
class
DataError
(
DatabaseError
):
"""Exception raised for errors that are due to problems with the processed data like division by zero, numeric value out of range.
"""
pass
class
OperationalError
(
DatabaseError
):
"""Exception raised for errors that are related to the database's operation and not necessarily under the control of the programmer
"""
...
...
@@ -41,16 +47,19 @@ class IntegrityError(DatabaseError):
"""
pass
class
InternalError
(
DatabaseError
):
"""Exception raised when the database encounters an internal error.
"""
pass
class
ProgrammingError
(
DatabaseError
):
"""Exception raised for programming errors.
"""
pass
class
NotSupportedError
(
DatabaseError
):
"""Exception raised in case a method or database API was used which is not supported by the database,.
"""
...
...
src/connector/python/windows/python2/taos/subscription.py
浏览文件 @
70d751ba
from
.cinterface
import
CTaosInterface
from
.error
import
*
class
TDengineSubscription
(
object
):
"""TDengine subscription object
"""
def
__init__
(
self
,
sub
):
self
.
_sub
=
sub
def
consume
(
self
):
"""Consume rows of a subscription
"""
...
...
@@ -18,15 +19,15 @@ class TDengineSubscription(object):
buffer
=
[[]
for
i
in
range
(
len
(
fields
))]
while
True
:
block
,
num_of_fields
=
CTaosInterface
.
fetchBlock
(
result
,
fields
)
if
num_of_fields
==
0
:
break
if
num_of_fields
==
0
:
break
for
i
in
range
(
len
(
fields
)):
buffer
[
i
].
extend
(
block
[
i
])
self
.
fields
=
fields
return
list
(
map
(
tuple
,
zip
(
*
buffer
)))
def
close
(
self
,
keepProgress
=
True
):
def
close
(
self
,
keepProgress
=
True
):
"""Close the Subscription.
"""
if
self
.
_sub
is
None
:
...
...
@@ -38,12 +39,16 @@ class TDengineSubscription(object):
if
__name__
==
'__main__'
:
from
.connection
import
TDengineConnection
conn
=
TDengineConnection
(
host
=
"127.0.0.1"
,
user
=
"root"
,
password
=
"taosdata"
,
database
=
"test"
)
conn
=
TDengineConnection
(
host
=
"127.0.0.1"
,
user
=
"root"
,
password
=
"taosdata"
,
database
=
"test"
)
# Generate a cursor object to run SQL commands
sub
=
conn
.
subscribe
(
True
,
"test"
,
"select * from meters;"
,
1000
)
for
i
in
range
(
0
,
10
):
for
i
in
range
(
0
,
10
):
data
=
sub
.
consume
()
for
d
in
data
:
print
(
d
)
...
...
src/connector/python/windows/python3/taos/__init__.py
浏览文件 @
70d751ba
...
...
@@ -8,6 +8,7 @@ paramstyle = 'pyformat'
__all__
=
[
'connection'
,
'cursor'
]
def
connect
(
*
args
,
**
kwargs
):
""" Function to return a TDengine connector object
...
...
src/connector/python/windows/python3/taos/cinterface.py
浏览文件 @
70d751ba
此差异已折叠。
点击以展开。
src/connector/python/windows/python3/taos/connection.py
浏览文件 @
70d751ba
...
...
@@ -2,9 +2,11 @@ from .cursor import TDengineCursor
from
.subscription
import
TDengineSubscription
from
.cinterface
import
CTaosInterface
class
TDengineConnection
(
object
):
""" TDengine connection object
"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
self
.
_conn
=
None
self
.
_host
=
None
...
...
@@ -44,7 +46,12 @@ class TDengineConnection(object):
self
.
_config
=
kwargs
[
'config'
]
self
.
_chandle
=
CTaosInterface
(
self
.
_config
)
self
.
_conn
=
self
.
_chandle
.
connect
(
self
.
_host
,
self
.
_user
,
self
.
_password
,
self
.
_database
,
self
.
_port
)
self
.
_conn
=
self
.
_chandle
.
connect
(
self
.
_host
,
self
.
_user
,
self
.
_password
,
self
.
_database
,
self
.
_port
)
def
close
(
self
):
"""Close current connection.
...
...
@@ -56,7 +63,8 @@ class TDengineConnection(object):
"""
if
self
.
_conn
is
None
:
return
None
sub
=
CTaosInterface
.
subscribe
(
self
.
_conn
,
restart
,
topic
,
sql
,
interval
)
sub
=
CTaosInterface
.
subscribe
(
self
.
_conn
,
restart
,
topic
,
sql
,
interval
)
return
TDengineSubscription
(
sub
)
def
cursor
(
self
):
...
...
@@ -81,6 +89,7 @@ class TDengineConnection(object):
"""
pass
if
__name__
==
"__main__"
:
conn
=
TDengineConnection
(
host
=
'192.168.1.107'
)
conn
.
close
()
...
...
src/connector/python/windows/python3/taos/constants.py
浏览文件 @
70d751ba
...
...
@@ -3,6 +3,7 @@
from
.dbapi
import
*
class
FieldType
(
object
):
"""TDengine Field Types
"""
...
...
@@ -18,13 +19,21 @@ class FieldType(object):
C_BINARY
=
8
C_TIMESTAMP
=
9
C_NCHAR
=
10
C_TINYINT_UNSIGNED
=
11
C_SMALLINT_UNSIGNED
=
12
C_INT_UNSIGNED
=
13
C_BIGINT_UNSIGNED
=
14
# NULL value definition
# NOTE: These values should change according to C definition in tsdb.h
C_BOOL_NULL
=
0x02
C_TINYINT_NULL
=
-
128
C_TINYINT_UNSIGNED_NULL
=
255
C_SMALLINT_NULL
=
-
32768
C_SMALLINT_UNSIGNED_NULL
=
65535
C_INT_NULL
=
-
2147483648
C_INT_UNSIGNED_NULL
=
4294967295
C_BIGINT_NULL
=
-
9223372036854775808
C_BIGINT_UNSIGNED_NULL
=
18446744073709551615
C_FLOAT_NULL
=
float
(
'nan'
)
C_DOUBLE_NULL
=
float
(
'nan'
)
C_BINARY_NULL
=
bytearray
([
int
(
'0xff'
,
16
)])
...
...
src/connector/python/windows/python3/taos/cursor.py
浏览文件 @
70d751ba
...
...
@@ -51,7 +51,8 @@ class TDengineCursor(object):
raise
OperationalError
(
"Invalid use of fetch iterator"
)
if
self
.
_block_rows
<=
self
.
_block_iter
:
block
,
self
.
_block_rows
=
CTaosInterface
.
fetchRow
(
self
.
_result
,
self
.
_fields
)
block
,
self
.
_block_rows
=
CTaosInterface
.
fetchRow
(
self
.
_result
,
self
.
_fields
)
if
self
.
_block_rows
==
0
:
raise
StopIteration
self
.
_block
=
list
(
map
(
tuple
,
zip
(
*
block
)))
...
...
@@ -118,13 +119,14 @@ class TDengineCursor(object):
errno
=
CTaosInterface
.
libtaos
.
taos_errno
(
self
.
_result
)
if
errno
==
0
:
if
CTaosInterface
.
fieldsCount
(
self
.
_result
)
==
0
:
self
.
_affected_rows
+=
CTaosInterface
.
affectedRows
(
self
.
_result
)
return
CTaosInterface
.
affectedRows
(
self
.
_result
)
self
.
_affected_rows
+=
CTaosInterface
.
affectedRows
(
self
.
_result
)
return
CTaosInterface
.
affectedRows
(
self
.
_result
)
else
:
self
.
_fields
=
CTaosInterface
.
useResult
(
self
.
_result
)
self
.
_fields
=
CTaosInterface
.
useResult
(
self
.
_result
)
return
self
.
_handle_result
()
else
:
raise
ProgrammingError
(
CTaosInterface
.
errStr
(
self
.
_result
),
errno
)
raise
ProgrammingError
(
CTaosInterface
.
errStr
(
self
.
_result
),
errno
)
def
executemany
(
self
,
operation
,
seq_of_parameters
):
"""Prepare a database operation (query or command) and then execute it against all parameter sequences or mappings found in the sequence seq_of_parameters.
...
...
@@ -148,10 +150,13 @@ class TDengineCursor(object):
buffer
=
[[]
for
i
in
range
(
len
(
self
.
_fields
))]
self
.
_rowcount
=
0
while
True
:
block
,
num_of_fields
=
CTaosInterface
.
fetchRow
(
self
.
_result
,
self
.
_fields
)
block
,
num_of_fields
=
CTaosInterface
.
fetchRow
(
self
.
_result
,
self
.
_fields
)
errno
=
CTaosInterface
.
libtaos
.
taos_errno
(
self
.
_result
)
if
errno
!=
0
:
raise
ProgrammingError
(
CTaosInterface
.
errStr
(
self
.
_result
),
errno
)
raise
ProgrammingError
(
CTaosInterface
.
errStr
(
self
.
_result
),
errno
)
if
num_of_fields
==
0
:
break
self
.
_rowcount
+=
num_of_fields
...
...
@@ -166,20 +171,21 @@ class TDengineCursor(object):
buffer
=
[[]
for
i
in
range
(
len
(
self
.
_fields
))]
self
.
_rowcount
=
0
while
True
:
block
,
num_of_fields
=
CTaosInterface
.
fetchBlock
(
self
.
_result
,
self
.
_fields
)
block
,
num_of_fields
=
CTaosInterface
.
fetchBlock
(
self
.
_result
,
self
.
_fields
)
errno
=
CTaosInterface
.
libtaos
.
taos_errno
(
self
.
_result
)
if
errno
!=
0
:
raise
ProgrammingError
(
CTaosInterface
.
errStr
(
self
.
_result
),
errno
)
if
num_of_fields
==
0
:
break
raise
ProgrammingError
(
CTaosInterface
.
errStr
(
self
.
_result
),
errno
)
if
num_of_fields
==
0
:
break
self
.
_rowcount
+=
num_of_fields
for
i
in
range
(
len
(
self
.
_fields
)):
buffer
[
i
].
extend
(
block
[
i
])
return
list
(
map
(
tuple
,
zip
(
*
buffer
)))
def
nextset
(
self
):
"""
"""
...
...
@@ -210,6 +216,7 @@ class TDengineCursor(object):
"""
self
.
_description
=
[]
for
ele
in
self
.
_fields
:
self
.
_description
.
append
((
ele
[
'name'
],
ele
[
'type'
],
None
,
None
,
None
,
None
,
False
))
self
.
_description
.
append
(
(
ele
[
'name'
],
ele
[
'type'
],
None
,
None
,
None
,
None
,
False
))
return
self
.
_result
src/connector/python/windows/python3/taos/dbapi.py
浏览文件 @
70d751ba
...
...
@@ -4,6 +4,7 @@
import
time
import
datetime
class
DBAPITypeObject
(
object
):
def
__init__
(
self
,
*
values
):
self
.
values
=
values
...
...
@@ -16,19 +17,24 @@ class DBAPITypeObject(object):
else
:
return
-
1
Date
=
datetime
.
date
Time
=
datetime
.
time
Timestamp
=
datetime
.
datetime
def
DataFromTicks
(
ticks
):
return
Date
(
*
time
.
localtime
(
ticks
)[:
3
])
def
TimeFromTicks
(
ticks
):
return
Time
(
*
time
.
localtime
(
ticks
)[
3
:
6
])
def
TimestampFromTicks
(
ticks
):
return
Timestamp
(
*
time
.
localtime
(
ticks
)[:
6
])
Binary
=
bytes
# STRING = DBAPITypeObject(*constants.FieldType.get_string_types())
...
...
src/connector/python/windows/python3/taos/error.py
浏览文件 @
70d751ba
"""Python exceptions
"""
class
Error
(
Exception
):
def
__init__
(
self
,
msg
=
None
,
errno
=
None
):
self
.
msg
=
msg
...
...
@@ -10,26 +11,31 @@ class Error(Exception):
def
__str__
(
self
):
return
self
.
_full_msg
class
Warning
(
Exception
):
"""Exception raised for important warnings like data truncations while inserting.
"""
pass
class
InterfaceError
(
Error
):
"""Exception raised for errors that are related to the database interface rather than the database itself.
"""
pass
class
DatabaseError
(
Error
):
"""Exception raised for errors that are related to the database.
"""
pass
class
DataError
(
DatabaseError
):
"""Exception raised for errors that are due to problems with the processed data like division by zero, numeric value out of range.
"""
pass
class
OperationalError
(
DatabaseError
):
"""Exception raised for errors that are related to the database's operation and not necessarily under the control of the programmer
"""
...
...
@@ -41,16 +47,19 @@ class IntegrityError(DatabaseError):
"""
pass
class
InternalError
(
DatabaseError
):
"""Exception raised when the database encounters an internal error.
"""
pass
class
ProgrammingError
(
DatabaseError
):
"""Exception raised for programming errors.
"""
pass
class
NotSupportedError
(
DatabaseError
):
"""Exception raised in case a method or database API was used which is not supported by the database,.
"""
...
...
src/connector/python/windows/python3/taos/subscription.py
浏览文件 @
70d751ba
from
.cinterface
import
CTaosInterface
from
.error
import
*
class
TDengineSubscription
(
object
):
"""TDengine subscription object
"""
def
__init__
(
self
,
sub
):
self
.
_sub
=
sub
def
consume
(
self
):
"""Consume rows of a subscription
"""
...
...
@@ -18,15 +19,15 @@ class TDengineSubscription(object):
buffer
=
[[]
for
i
in
range
(
len
(
fields
))]
while
True
:
block
,
num_of_fields
=
CTaosInterface
.
fetchBlock
(
result
,
fields
)
if
num_of_fields
==
0
:
break
if
num_of_fields
==
0
:
break
for
i
in
range
(
len
(
fields
)):
buffer
[
i
].
extend
(
block
[
i
])
self
.
fields
=
fields
return
list
(
map
(
tuple
,
zip
(
*
buffer
)))
def
close
(
self
,
keepProgress
=
True
):
def
close
(
self
,
keepProgress
=
True
):
"""Close the Subscription.
"""
if
self
.
_sub
is
None
:
...
...
@@ -38,12 +39,16 @@ class TDengineSubscription(object):
if
__name__
==
'__main__'
:
from
.connection
import
TDengineConnection
conn
=
TDengineConnection
(
host
=
"127.0.0.1"
,
user
=
"root"
,
password
=
"taosdata"
,
database
=
"test"
)
conn
=
TDengineConnection
(
host
=
"127.0.0.1"
,
user
=
"root"
,
password
=
"taosdata"
,
database
=
"test"
)
# Generate a cursor object to run SQL commands
sub
=
conn
.
subscribe
(
True
,
"test"
,
"select * from meters;"
,
1000
)
for
i
in
range
(
0
,
10
):
for
i
in
range
(
0
,
10
):
data
=
sub
.
consume
()
for
d
in
data
:
print
(
d
)
...
...
tests/pytest/insert/basic_unsigned.py
浏览文件 @
70d751ba
...
...
@@ -26,7 +26,7 @@ class TDTestCase:
tdSql
.
prepare
()
ret
=
tdSql
.
execute
(
'create table tb (ts timestamp, speed int unsigned)'
)
'create table tb (ts timestamp, speed
tiny
int unsigned)'
)
insertRows
=
10
tdLog
.
info
(
"insert %d rows"
%
(
insertRows
))
...
...
@@ -38,11 +38,11 @@ class TDTestCase:
tdLog
.
info
(
"insert earlier data"
)
tdSql
.
execute
(
'insert into tb values (now - 5m , 10)'
)
tdSql
.
execute
(
'insert into tb values (now - 6m , 10)'
)
tdSql
.
execute
(
'insert into tb values (now - 7m ,
10
)'
)
tdSql
.
execute
(
'insert into tb values (now - 8m ,
429496729
4)'
)
tdSql
.
execute
(
'insert into tb values (now - 7m ,
NULL
)'
)
tdSql
.
execute
(
'insert into tb values (now - 8m ,
25
4)'
)
tdSql
.
error
(
'insert into tb values (now - 9m, -1)'
)
tdSql
.
error
(
'insert into tb values (now - 9m,
429496729
5)'
)
tdSql
.
error
(
'insert into tb values (now - 9m,
25
5)'
)
tdSql
.
query
(
"select * from tb"
)
tdSql
.
checkRows
(
insertRows
+
4
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录