【问题标题】:get error on calling put_all from python thin client从 python 瘦客户端调用 put_all 时出错
【发布时间】:2020-04-04 23:34:20
【问题描述】:

我正在处理示例“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,
        },
    ],
})

put 工作正常

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(最近一次调用最后一次):文件 “C:/ignite/pyignite/examples/create_binary.py”,第 105 行,在 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)}) 文件 "C:\Users\nbkmqoi\AppData\Roaming\Python\Python35\site-packages\pyignite\utils.py", 第 169 行,在 ste_wrapper 中 raise exc(result.message) pyignite.exceptions.CacheError: 无法更新密钥(如果可能,重试更新)。:[1, 2]

如何使 put_all 正常工作? 谢谢!

【问题讨论】:

  • 看来对于put,我们需要给一个key_hint(key_hint=IntObject)。但是对于 put_all,我们如何放置 key_hint 呢?

标签: python thin-client


【解决方案1】:

我想通了。 需要在带键的元组中添加数据类型

student_cache.put_all({(1, IntObject): Student(LOGIN='jdoe', NAME='John Doe', AGE=17, GPA=4.25), (2 , IntObject): Student(LOGIN='jdoe2', NAME='John Doe2', AGE=18, GPA=4.25)})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 2014-07-12
    • 1970-01-01
    • 2010-12-18
    • 2021-02-06
    相关资源
    最近更新 更多