vikadata / vika.py Goto Github PK
View Code? Open in Web Editor NEWVika is a API-based SaaS database platform for users and developers,here's Python SDK for integration. 维格表(vika.cn)官方 Python SDK, 让你轻松集成维格表的 可视化API数据库能力。
License: MIT License
Vika is a API-based SaaS database platform for users and developers,here's Python SDK for integration. 维格表(vika.cn)官方 Python SDK, 让你轻松集成维格表的 可视化API数据库能力。
License: MIT License
Lines 5 to 7 in 4626f28
初始化字段是record: str
,但是后续却使用record.id
,容易引起困惑
python的sdk能否增加配置选项,可以手动指定忽略证书错误。
运行一段时间后会报错:vika.exceptions.ServerError: API Server Error: 504,请问是触发了什么限制吗?
运行表格右侧“API示例代码”中的示例代码报错
代码是:
# 返回记录总数
records_count = datasheet.records.count()
错误信息是:
AttributeError: 'RecordManager' object has no attribute 'count'
PS. 其他示例代码,包括打开datasheet,返回所有记录都可正常运行。
@mr-kelly 我今天一看
为什么vika模块无法安装?什么报错信息都没有,只提示了无法安装
for a vika datasheet like below
我想执行批量添加数据。
records = datasheet.records.bulk_create(
[
{"title": "new record from Python SDK"},
{"title": "new record from Python SDK2"},
]
)
report error
File "d:\quant\cmp\cmp\utils\vika_table.py", line 92, in <module>
save_dataframe_to_vika()
File "d:\quant\cmp\cmp\utils\vika_table.py", line 81, in save_dataframe_to_vika
record = datasheet.records.create({"title": "new record from Python SDK"})
File "C:\Python39\lib\site-packages\vika\datasheet\record_manager.py", line 49, in create
resp = self._dst.create_records(data)
File "C:\Python39\lib\site-packages\vika\datasheet\datasheet.py", line 190, in create_records
return handle_response(resp, PostRecordResponse)
File "C:\Python39\lib\site-packages\vika\utils.py", line 81, in handle_response
raise Exception(r['message'])
Exception: The format of the fields parameter value is wrong
场景是这样的,业务人员更新表格数据,更新后通过 webhook 触发系统逻辑,自动抓取表格数据,而不是一次次来轮询...
因为权限问题,原表格没有权限打开,请问如何查询镜像表格?
save_dataframe_to_vika(df, table_name="default")
读取日期类型字段出现的都是None,不太符合预期
records = datasheet.records.filter(selected=True)
Am I calling with the wrong way ?
Not support in source code ?
def query_parse(field_key_map: FieldKeyMap, **kwargs):
"""
将查询条件转化为 filterByFormula
records.filter(title="hello", subtitle="world") => '{title}="hello" AND {subtitle}="world"'
1. 通过 filter 和 get 参数查询到的只能转化为 and 条件。
"""
query_str = ""
for k, v in kwargs.items():
if query_str:
query_str += " AND "
# 处理空值
if v is None:
v = 'BLANK()'
# 处理字符串
if isinstance(v, str):
v = f'"{v}"'
# 处理数组类型的值,多选,成员?
if isinstance(v, list):
v = f'"{", ".join(v)}"'
query_str += f'{{{trans_key(field_key_map, k)}}}={v}'
return query_str
配置完API Token和datasheetid后运行报错Exception: Unauthorized如何解决 python3.10.4
版本升级后 vika_cmb_reports.records.filter(recordId=report_id)
报错
recordId 改为 recordIds 同样的错误,分析应该是后端server的兼容问题
Python SDK
使用field ID更新的代码如下:
在查询获得record的时候,record里的数据都是fieldname表示的,而不是fieldid,我用fieldid去判断对应的字段是否为空,是无法正确判断的,第一个print的结果如下,红框是要更新的字段
第二个print结果如下
显示新增了一个fieldID的字段,而不是更新'白底图'的数组
然后我再对这条记录查询一次,会发现'白底图'的内容被更新成了'fldkt4vmm79Uv'的内容,原来白底图的内容丢失。
然后我就尝试不用fieldid,直接用fieldname,代码修改成
重新测试。第一次print打印出原始的记录内容
第二次print打印出更新后的记录内容,能看到数组里有两条记录
但是重新根据skuid查询后发现,实际记录数组里还是只有一个
所以Python的sdk下到底应该怎么更新一个数组字段的值?
🚀🚀🚀 发布基于 DataBus v3 版本 fusion api 的 sdk
我们采用渐进式升级的策略, 当前阶段只开放一个查询行 get records
的接口。
curl --location 'https://vika.cn/fusion/v3/datasheets/{dstId}/records?fieldKey=name' \
--header 'Authorization: Bearer {token}'
安装 beta
版本的依赖
npm i @vikadata/[email protected]
// apitable
npm i [email protected]
只需要在 sdk 调用 api 时增加 isV3
的支持即可启用 v3 版本的 sdk
const token = 'xxxx';
const datasheetId = 'dstXXXX';
const apitable = new Vika({
token
});
const datasheet = apitable.datasheet(datasheetId);
// 添加 isV3 参数调用 v3 版本的 fusion api
const records = await datasheet.records.query({ isV3: true });
安装 beta
版本的依赖
pip install apitable==2.0.0b4
只需要在 sdk 调用 api 时增加 isV3
的支持即可启用 v3 版本的 sdk
token = 'xxxx';
datasheetId = 'dstXXXX';
apitable = Apitable(token)
dst = apitable.datasheet(datasheetId)
// 添加 isV3 参数调用 v3 版本的 fusion api
parameter = { "isV3": True }
records = self.dst.records.all(**parameter)
安装 beta
版本的依赖
<dependency>
<groupId>cn.vika</groupId>
<artifactId>vika-client</artifactId>
<version>1.0.4</version>
</dependency>
只需要在 sdk 调用 api 时增加 isV3
的支持即可启用 v3 版本的 sdk
String token = 'xxxx';
String datasheetId = 'dstXXXX';
final ApitableApiClient apitableApiClient = new ApitableApiClient(new ApiCredential(token));
// 添加 isV3 参数调用 v3 版本的 fusion api
Pager<Record> pager = apitableApiClient.getRecordApi().getRecords(datasheetId, true);
代码 vika.py 中,与文档不符:当调用 all 时,显式地传入参数,则利用服务端计算返回部分数据集。
if resp.success:
records += resp.data.records
if current_total < resp.data.total:
kwargs.update({"pageNum": page_num + 1})
records += self.fetch_datasheet(dst_id, **kwargs)
建议更新pydantic依赖,而不是限制版本。
当前版本较老,与其他项目存在冲突:
confection 0.1.4 requires pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4, but you have pydantic 1.7 which is incompatible.
spacy 3.7.2 requires pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4, but you have pydantic 1.7 which is incompatible.
thinc 8.2.1 requires pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4, but you have pydantic 1.7 which is incompatible.
weasel 0.3.4 requires pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4, but you have pydantic 1.7 which is incompatible.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.