在 pyq 中更新到 table

Upsert to a table in pyq

OS: Windows 10 Enterprise, Python: Python 3.6.4, PyQ: pyq (4.1.4).

我很确定我的数据类型是正确的,尽管当我尝试更新插入到我的 table.

时,我一直收到 _k.error: type

首先,我使用以下命令初始化 table...

q.set(':testTable', q('!', ["Key", "Status", "Descr", "FileName"], [K.long([]), K.int([]), K.char([]), K.symbol([])]).flip)

检查 table 元...

q.get(':testTable').meta.show()
c       | t f a
--------| -----
Key     | j
Status  | i
Descr   | c
FileName| s

我在python中设置了一些示例变量,分别存储在列表和字典中...

key = 42
status = 3
descr = "h"
fn = "cymbeline"
data = [key, status, descr, fn]
data_dict = {a:b for a, b in zip(['Key', 'Status', 'Descr', 'FileName'], data)}

然后我尝试使用以下每个命令分别更新到 table...

q.upsert(':testTable', data)
q.upsert(':testTable', data_dict)

但是,它们都失败了,并显示相同的 _k.error: type 消息。

我认为这里有一个简单的解决方案,但我似乎无法弄清楚。提前谢谢你。

您需要将 descr 显式转换为 K.char 类型:

descr = K.char("h")

否则它会被隐式转换为符号,你会得到一个类型错误。