QuestDB 无法读取刚刚返回的数据

QuestDB can't read data it just returned

我在 Jupyter Notebook 中 Python 工作并使用来自 QuestDB 实例的数据。

我定义的读取数据的辅助函数:

def query(q):
    r = requests.get(f"http://{ip}:{port}/exp?query="+q)
    rawData = r.text
    df = pd.read_csv(io.StringIO(rawData))
    return df

因此对数据使用此查询:

query("select * from users")

产量:

但是如果我们随后尝试查询特定 user_id 的数据 returned:

query("select * from users where user_id = 72")

returned 是来自 QuestDB 的 No query text 错误:

我已经尝试过更改数据类型,即 '72' 而不是 72。奇怪的是,我还有其他更复杂的查询,这些查询适用于相同 table 和 return 结果的其他字段。

感谢任何帮助!

我的猜测是,当您将 where user_id = 72 部分添加到查询中时,第二个 = 符号会扰乱 HTTP 请求,而 QuestDB 根本不会收到 query 参数。 因此 No query text 错误。

我建议您在将 URL 传递给 requests.get() 之前对其进行编码。 它看起来像这样:

def query(q):
    r = requests.get(f"http://{ip}:{port}/exp?query="+requests.utils.quote(q))
    rawData = r.text
    df = pd.read_csv(io.StringIO(rawData))
    return df

user_id 确实是一个字符串 '72' 而不是 72,字符串相等的 QuestDB 语法是 IN.

所以

query("select * from users where user_id in '72'")

解决问题。