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'")
解决问题。
我在 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'")
解决问题。