无法从Python客户端插入数据到CrateDB

2 投票
1 回答
567 浏览
提问于 2025-04-21 20:21

我在用Python客户端。

我已经成功连接上了,然后提交了一个插入数据的语句,里面的参数数据是写死的。但是我遇到了一个错误。

from crate import client
con = client.connect("http://webservicesbigmac.richmond.edu:4200")
cursor = con.cursor()
print cursor
cursor.execute("INSERT INTO logs (client_ip) VALUES (?)", ("66.249.67.49"))

我可以在崩溃客户端里运行这个查询,而且它能正常工作。

cr> INSERT INTO logs (client_ip) VALUES ('66.249.67.49');

插入成功,影响了1行数据(0.001秒)

我知道我肯定哪里做错了,但不太确定是什么问题。

这是错误的堆栈跟踪信息。

<crate.client.cursor.Cursor object at 0x10e40bcd0>
Traceback (most recent call last):
  File "/Users/epalmer/projects/cratedbload/sqlload2.py", line 11, in <module>
    cursor.execute("INSERT INTO logs (client_ip) VALUES (?)", ("66.249.67.49"))
  File "/Library/Python/2.7/site-packages/crate/client/cursor.py", line 51, in execute
    self._result = self.connection.client.sql(sql, parameters, bulk_parameters)
  File "/Library/Python/2.7/site-packages/crate/client/http.py", line 202, in sql
    content = self._json_request('POST', self.path, data=data)
  File "/Library/Python/2.7/site-packages/crate/client/http.py", line 362, in _json_request
    self._raise_for_status(response)
  File "/Library/Python/2.7/site-packages/crate/client/http.py", line 348, in _raise_for_status
    raise ProgrammingError(error.get('message', ''), error_trace=error_trace)
crate.client.exceptions.ProgrammingError: SQLActionException[Failed to parse source [{"args":     "66.249.67.49", "stmt": "INSERT INTO logs (client_ip) VALUES (?)"}]]
暂无标签

1 个回答

3

我猜测一下(我从来没用过cratedata),但从其中一个选择数据的例子来看,绑定变量的列表需要是一个元组。你现在只传入了一个值——试试这样写:("66.249.67.49", ) 注意后面有个逗号

撰写回答