Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Tonvia
TDengine
提交
a2e5f650
T
TDengine
项目概览
Tonvia
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
a2e5f650
编写于
8月 20, 2021
作者:
L
Linhe Huo
提交者:
GitHub
8月 20, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-6231]<fix>: fix all none error of stmt multibind in python connector (#7482)
上级
032cea14
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
60 addition
and
4 deletion
+60
-4
src/connector/python/taos/bind.py
src/connector/python/taos/bind.py
+10
-4
src/connector/python/tests/test-td6231.py
src/connector/python/tests/test-td6231.py
+50
-0
未找到文件。
src/connector/python/taos/bind.py
浏览文件 @
a2e5f650
...
@@ -10,7 +10,8 @@ import sys
...
@@ -10,7 +10,8 @@ import sys
_datetime_epoch
=
datetime
.
utcfromtimestamp
(
0
)
_datetime_epoch
=
datetime
.
utcfromtimestamp
(
0
)
def
_is_not_none
(
obj
):
def
_is_not_none
(
obj
):
obj
!=
None
return
obj
!=
None
class
TaosBind
(
ctypes
.
Structure
):
class
TaosBind
(
ctypes
.
Structure
):
_fields_
=
[
_fields_
=
[
(
"buffer_type"
,
c_int
),
(
"buffer_type"
,
c_int
),
...
@@ -320,6 +321,14 @@ class TaosMultiBind(ctypes.Structure):
...
@@ -320,6 +321,14 @@ class TaosMultiBind(ctypes.Structure):
def
nchar
(
self
,
values
):
def
nchar
(
self
,
values
):
# type: (list[str]) -> None
# type: (list[str]) -> None
self
.
num
=
len
(
values
)
self
.
buffer_type
=
FieldType
.
C_NCHAR
is_null
=
[
1
if
v
==
None
else
0
for
v
in
values
]
self
.
is_null
=
cast
((
c_byte
*
self
.
num
)(
*
is_null
),
c_char_p
)
if
sum
(
is_null
)
==
self
.
num
:
self
.
length
=
(
c_int32
*
len
(
values
))(
0
*
self
.
num
)
return
if
sys
.
version_info
<
(
3
,
0
):
if
sys
.
version_info
<
(
3
,
0
):
_bytes
=
[
bytes
(
value
)
if
value
is
not
None
else
None
for
value
in
values
]
_bytes
=
[
bytes
(
value
)
if
value
is
not
None
else
None
for
value
in
values
]
buffer_length
=
max
(
len
(
b
)
+
1
for
b
in
_bytes
if
b
is
not
None
)
buffer_length
=
max
(
len
(
b
)
+
1
for
b
in
_bytes
if
b
is
not
None
)
...
@@ -347,9 +356,6 @@ class TaosMultiBind(ctypes.Structure):
...
@@ -347,9 +356,6 @@ class TaosMultiBind(ctypes.Structure):
)
)
self
.
length
=
(
c_int32
*
len
(
values
))(
*
[
len
(
b
)
if
b
is
not
None
else
0
for
b
in
_bytes
])
self
.
length
=
(
c_int32
*
len
(
values
))(
*
[
len
(
b
)
if
b
is
not
None
else
0
for
b
in
_bytes
])
self
.
buffer_length
=
buffer_length
self
.
buffer_length
=
buffer_length
self
.
num
=
len
(
values
)
self
.
is_null
=
cast
((
c_byte
*
self
.
num
)(
*
[
1
if
v
==
None
else
0
for
v
in
values
]),
c_char_p
)
self
.
buffer_type
=
FieldType
.
C_NCHAR
def
tinyint_unsigned
(
self
,
values
):
def
tinyint_unsigned
(
self
,
values
):
self
.
buffer_type
=
FieldType
.
C_TINYINT_UNSIGNED
self
.
buffer_type
=
FieldType
.
C_TINYINT_UNSIGNED
...
...
src/connector/python/tests/test-td6231.py
0 → 100644
浏览文件 @
a2e5f650
from
taos
import
*
conn
=
connect
()
dbname
=
"pytest_taos_stmt_multi"
conn
.
execute
(
"drop database if exists %s"
%
dbname
)
conn
.
execute
(
"create database if not exists %s"
%
dbname
)
conn
.
select_db
(
dbname
)
conn
.
execute
(
"create table if not exists log(ts timestamp, bo bool, nil tinyint,
\
ti tinyint, si smallint, ii int, bi bigint, tu tinyint unsigned,
\
su smallint unsigned, iu int unsigned, bu bigint unsigned,
\
ff float, dd double, bb binary(100), nn nchar(100), tt timestamp)"
,
)
stmt
=
conn
.
statement
(
"insert into log values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
)
params
=
new_multi_binds
(
16
)
params
[
0
].
timestamp
((
1626861392589
,
1626861392590
,
1626861392591
))
params
[
1
].
bool
((
True
,
None
,
False
))
params
[
2
].
tinyint
([
-
128
,
-
128
,
None
])
# -128 is tinyint null
params
[
3
].
tinyint
([
0
,
127
,
None
])
params
[
4
].
smallint
([
3
,
None
,
2
])
params
[
5
].
int
([
3
,
4
,
None
])
params
[
6
].
bigint
([
3
,
4
,
None
])
params
[
7
].
tinyint_unsigned
([
3
,
4
,
None
])
params
[
8
].
smallint_unsigned
([
3
,
4
,
None
])
params
[
9
].
int_unsigned
([
3
,
4
,
None
])
params
[
10
].
bigint_unsigned
([
3
,
4
,
None
])
params
[
11
].
float
([
3
,
None
,
1
])
params
[
12
].
double
([
3
,
None
,
1.2
])
params
[
13
].
binary
([
"abc"
,
"dddafadfadfadfadfa"
,
None
])
# params[14].nchar(["涛思数据", None, "a long string with 中文字符"])
params
[
14
].
nchar
([
None
,
None
,
None
])
params
[
15
].
timestamp
([
None
,
None
,
1626861392591
])
stmt
.
bind_param_batch
(
params
)
stmt
.
execute
()
result
=
stmt
.
use_result
()
assert
result
.
affected_rows
==
3
result
.
close
()
result
=
conn
.
query
(
"select * from log"
)
for
row
in
result
:
print
(
row
)
result
.
close
()
stmt
.
close
()
conn
.
close
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录