gpt4 book ai didi

python - pyignite 序列化和反序列化复杂类型

转载 作者:行者123 更新时间:2023-12-01 08:24:49 26 4
gpt4 key购买 nike

我正在尝试序列化和反序列化 json 映射(pyignite 中的映射复杂类型)。序列化似乎工作正常,但我在反序列化时遇到错误。我不确定我的序列化是否正确,但它转储出一个看起来像二进制字节数组的整数数组。

Traceback (most recent call last):
File "ignite-sql.py", line 44, in <module>
print([[result[0], result[1], result[2], Map.from_python(result[3])]
for result in results])
File "ignite-sql.py", line 44, in <listcomp>
print([[result[0], result[1], result[2], Map.from_python(result[3])]
for result in results])
File "env/lib/python3.7/site-packages/pyignite/datatypes/complex.py", line 276, in from_python
for k, v in value.items():
AttributeError: 'list' object has no attribute 'items'

这是最小的例子

client = Client()
client.connect('127.0.0.1', 10800)

PRESENCE_TABLE = '''
CREATE TABLE IF NOT EXISTS presence (
subkey VARCHAR,
channel VARCHAR,
uuid VARCHAR,
metadata BINARY,
PRIMARY KEY (subkey, channel, uuid)
)'''

DROP_PRESENCE_TABLE = '''
DROP TABLE IF EXISTS presence
'''

INSERT_PRESENCE_TABLE = '''
INSERT INTO presence(
subkey, channel, uuid, metadata
) VALUES (?, ?, ?, ?)
'''


obj = Map.from_python({"foo":"bar"})
args = ["test","foo",str(uuid.uuid4()),obj]
client.sql(DROP_PRESENCE_TABLE)
client.sql(PRESENCE_TABLE)
client.sql(INSERT_PRESENCE_TABLE,query_args=args)

results = client.sql('select * from presence')

print([[result[0], result[1], result[2], Map.from_python(result[3])] for result in results])

最佳答案

我是 pyignite 的作者和维护者.

我会尝试回答您的问题,但由于我不允许在这里评论问题,因此我将不得不对您尝试使用代码执行的操作进行一些猜测。

  1. 您似乎想将 map 对象放入 SQL 数据库中。不幸的是,Ignite 并不是这样工作的。 Ignite SQL 使用的数据类型描述为 here 。如您所见,没有 map 或其他复杂的数据类型。

我不确定您想要实现什么目的,但也许您可以在另一个 SQL 表上使用外键来实现此目的?对我来说,这比将哈希表存储在 SQL 列中更有意义。或者,您可以对数据进行 JSON 化并将其存储为 String (VARCHAR)。

  • 另一件事是如何使用 from_python() 方法。这些方法仅供内部使用。他们创建的字节序列从用户的角度来看是无用的。
  • pyignite API 背后的第一个想法是用户应该只能使用内置 Python 类型在 Ignite 集群中存储和检索数据。所有序列化都在幕后进行。没有可用的序列化器方法或对象。 Simple examples写这篇文章就是为了给你这个想法。

  • Map 未记录,不应使用。 MapObject在极少数情况下,当只给 pyignite 一个 dict 对象是不明确的时, class 可以用作类型提示。请阅读this section有关如何使用类型提示的文档。
  • 说了这么多,我希望能够为您指明正确的方向。如果我不是,请尝试澄清您的问题,我会改进我的答案。

    祝您好运,感谢您使用 pyignite

    关于python - pyignite 序列化和反序列化复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340289/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com