从 python 瘦客户端调用 put_all 时出错
get error on calling put_all from python thin client
我正在处理示例 "create_binary.py",而不是放入缓存,我尝试 put_all
对多个记录进行缓存。虽然 put
成功,但 put_all
出错。
student_cache = client.get_or_create_cache({
PROP_NAME: 'SQL_PUBLIC_STUDENT',
PROP_SQL_SCHEMA: 'PUBLIC',
PROP_QUERY_ENTITIES: [
{
'table_name': 'Student'.upper(),
'key_field_name': 'SID',
'key_type_name': 'java.lang.Integer',
'field_name_aliases': [],
'query_fields': [
{
'name': 'SID',
'type_name': 'java.lang.Integer',
'is_key_field': True,
'is_notnull_constraint_field': True,
},
{
'name': 'NAME',
'type_name': 'java.lang.String',
},
{
'name': 'LOGIN',
'type_name': 'java.lang.String',
},
{
'name': 'AGE',
'type_name': 'java.lang.Integer',
},
{
'name': 'GPA',
'type_name': 'java.math.Double',
},
],
'query_indexes': [],
'value_type_name': 'SQL_PUBLIC_STUDENT_TYPE',
'value_field_name': None,
},
],
})
输入正常
student_cache.put(
1,
Student(LOGIN='jdoe', NAME='John Doe', AGE=17, GPA=4.25),
key_hint=IntObject
)
put_all 不工作
student_cache.put_all({1: Student(LOGIN='jdoe', NAME='John Doe', AGE=17, GPA=4.25), 2: Student(LOGIN='jdoe2', NAME='John Doe2', AGE=18, GPA=4.25)})
put_all
给出错误:
Traceback (most recent call last): File
"C:/ignite/pyignite/examples/create_binary.py", line 105, in
student_cache.put_all({1: Student(LOGIN='jdoe', NAME='John Doe', AGE=17, GPA=4.25), 2: Student(LOGIN='jdoe2', NAME='John Doe2', AGE=18,
GPA=4.25)}) File
"C:\Users\nbkmqoi\AppData\Roaming\Python\Python35\site-packages\pyignite\utils.py",
line 169, in ste_wrapper
raise exc(result.message) pyignite.exceptions.CacheError: Failed to update keys (retry update if possible).: [1, 2]
如何让 put_all 正常工作?
谢谢!
我想通了。
需要使用键
在 turple 中添加数据类型
student_cache.put_all({(1, IntObject): 学生(LOGIN='jdoe', NAME='John Doe', AGE=17, GPA=4.25), (2, IntObject): Student(LOGIN='jdoe2', NAME='John Doe2', AGE=18, GPA=4.25)})
我正在处理示例 "create_binary.py",而不是放入缓存,我尝试 put_all
对多个记录进行缓存。虽然 put
成功,但 put_all
出错。
student_cache = client.get_or_create_cache({
PROP_NAME: 'SQL_PUBLIC_STUDENT',
PROP_SQL_SCHEMA: 'PUBLIC',
PROP_QUERY_ENTITIES: [
{
'table_name': 'Student'.upper(),
'key_field_name': 'SID',
'key_type_name': 'java.lang.Integer',
'field_name_aliases': [],
'query_fields': [
{
'name': 'SID',
'type_name': 'java.lang.Integer',
'is_key_field': True,
'is_notnull_constraint_field': True,
},
{
'name': 'NAME',
'type_name': 'java.lang.String',
},
{
'name': 'LOGIN',
'type_name': 'java.lang.String',
},
{
'name': 'AGE',
'type_name': 'java.lang.Integer',
},
{
'name': 'GPA',
'type_name': 'java.math.Double',
},
],
'query_indexes': [],
'value_type_name': 'SQL_PUBLIC_STUDENT_TYPE',
'value_field_name': None,
},
],
})
输入正常
student_cache.put(
1,
Student(LOGIN='jdoe', NAME='John Doe', AGE=17, GPA=4.25),
key_hint=IntObject
)
put_all 不工作
student_cache.put_all({1: Student(LOGIN='jdoe', NAME='John Doe', AGE=17, GPA=4.25), 2: Student(LOGIN='jdoe2', NAME='John Doe2', AGE=18, GPA=4.25)})
put_all
给出错误:
Traceback (most recent call last): File "C:/ignite/pyignite/examples/create_binary.py", line 105, in student_cache.put_all({1: Student(LOGIN='jdoe', NAME='John Doe', AGE=17, GPA=4.25), 2: Student(LOGIN='jdoe2', NAME='John Doe2', AGE=18, GPA=4.25)}) File "C:\Users\nbkmqoi\AppData\Roaming\Python\Python35\site-packages\pyignite\utils.py", line 169, in ste_wrapper raise exc(result.message) pyignite.exceptions.CacheError: Failed to update keys (retry update if possible).: [1, 2]
如何让 put_all 正常工作? 谢谢!
我想通了。 需要使用键
在 turple 中添加数据类型student_cache.put_all({(1, IntObject): 学生(LOGIN='jdoe', NAME='John Doe', AGE=17, GPA=4.25), (2, IntObject): Student(LOGIN='jdoe2', NAME='John Doe2', AGE=18, GPA=4.25)})