kumfo
1
报错信息类似:
{"success":false,"error_message":"base xxx not found","results":[],"metadata":[]}
但是我执行update是没问题的,执行的SQL语句参考:
insert into data_report (`日期`, `PV`, `UV`, `新增问题`, `新增回答`, `新增文章`, `新增用户`) values ("2022-07-01", 6, 12, 12, 138, 18, 18)
请求的url参考:
https://dtable-db.seatable.cn/api/v1/query/dtable_uuid
另外,我参考了这个/dtable-db/rows.md 接口报错信息也差不多,大概就是找不到指定uuid
kumfo
3
/**
* @param $data
* @param $accessToken
* @param $dbUrl
* @param $uuid
* @return bool
*/
protected function insertRow($data, $accessToken, $dbUrl, $uuid)
{
$sql = sprintf(
'INSERT INTO data_report (`日期`, `PV`, `UV`, `新增问题`, `新增回答`, `新增文章`, `新增用户`) VALUES ("%s", %d, %d, %d, %d, %d, %d)',
$data['date'], $data['pv'], $data['uv'], $data['questions'], $data['answers'], $data['articles'], $data['users']
);
try {
$url = $dbUrl . 'api/v1/query/' . $uuid;
$client = new HttpClient($url);
$client->setHeader('Content-Type', 'application/json')
->setHeader('charset', 'utf-8')
->setHeader('Authorization', 'Token ' . $accessToken);
$client->post(json_encode([
'sql' => $sql,
'convert_keys' => false
]));
echo $client->getResponseBody();
$res = json_decode($client->getResponseBody(), true);
if (count($res['results']) == 1) {
return true;
}
return false;
} catch (\Throwable $e) {
return false;
}
}
备注,HttpClient
是我们自己内部的请求库,忽略掉,核心也是利用curl做的处理;
至于里面相关的参数是通过https://cloud.seatable.cn/api/v2.1/dtable/app-access-token/
请求获取的,不会有啥问题,这里的sql
语句如果玩换成update
或者是select *
都没啥问题。
kumfo
5
谢谢哈,目前我暂时不知道是为啥,接口设置token的时候是有读写权限的
insert 是直接写入到大数据存储,如果这个表格没有归档过,会出现这个错误。
如果要直接写入表格存储,用 dtable-server 提供的 append row 和 batch append row API:
https://seatable.github.io/seatable-scripts-cn/python/rows/#append-row
https://docs.seatable.cn/published/seatable-api/dtable-server/rows.md
update, delete 都是会自动判断对应的行是在哪个存储中。
1 个赞
kumfo
8
非常感谢,完美的解决了问题,你这个提示消息能直接告知解决方案就好了