SDK(Python)
SDK 是一个包含预构建 Labii 组件的工具包,开发者使用它来与 Labii API 进行交互。完整的文档可在 https://docs.labii.com/api/overview 查阅。
使用
- 安装 Labii SDK
pip install labii-sdk
- 导入包
from labii_sdk.sdk import LabiiObject
- 初始化 API 对象
labii = LabiiObject(
api_key="xxx",
organization__sid="xxx"
)
- 开始查询
# get a list of tables
labii.Tables.list()
初始化 SDK
在初始化 SDK 时,可以自定义以下参数:
base_url,服务器基础 URL,默认为 https://www.labii.dev。如果您使用的是不同的数据中心,请确保更改base_url设置。api_key,用于认证的 API Key。organization__sid,您的组织 SID。您可以通过登录 Labii (https://www.labii.com/login/),然后进入侧边菜单 -> 设置 -> 组织 -> SID 找到它。api,,APIObject。如果未提供新的 APIObject,将自动创建。当您需要在初始化 Labii 对象之前对 API 进行认证时,请使用此功能。
labii = LabiiObject(
base_url="https://www.labii.dev",
api_key="xxx"
organization__sid=None
api=None
)
对象
用于交互的 Labii 对象。更多信息请参阅 https://docs.labii.com/api/overview#objects
- Profile
- APIKey
- Organization
- Application
- Subscription
- People
- Team
- SAML
- OrganizationWidget
- Backup
- Project
- ProjectMember
- Table
- Column
- Section
- Filter
- Record
- Cell
- Version
- Visitor
- Activity
- Workflow
- Step
- Widget
- Dashboard
- Notification
方法
用于与对象交互的方法列表。
create
创建一个对象。
data(dict),用于提交的 JSON 字典数据。更多信息请参阅 https://docs.labii.com/api/methodsquery(可选),附加查询以限制结果。
# Create a project
labii.Project.create({name="test", ...})
# Create a table
labii.Table.create({name_singular="test", ...})
# Create a row
labii.Record.create{{name="test", ...}, query="table__sid=xxx"}
retrieve
返回一个对象。
sid,对象的 SID。query(可选),附加查询以限制结果。
# Return a project
labii.Project.retrieve("psvy0a40x18c0rwBGLQV1")
# Return a record
labii.Row.retrieve("psvy0a40x18c0rwBGLQV1")
list
获取对象列表。
page(默认=1),返回的页码。page_size(默认=10),每页显示的项目数。all_pages(布尔值,默认=False),是否返回所有页面。当为 False 时,仅返回第一页的数据。仅适用于列表视图。level(默认为 "organization"),获取记录的范围。更多信息请参阅 https://docs.labii.com/api/overview#levelsserializer(默认为 "list"),返回数据字段的范围。更多信息请参阅 https://docs.labii.com/api/overview#serializer- name,仅返回 SID 和名称,速度非常快
- list,返回对象的选定字段,速度快
- detail,返回对象的所有字段,速度慢
query(可选),附加查询以限制结果。
# Return first page of experiment records
labii.Row.list(
page=1,
page_size=10,
all_pages=False,
level="organization",
serializer="name",
query="table__sid=psvy0a40x18c0rwBGLQV1&is_archived=false"
)
# Return list of projects
labii.Project.list()
modify
编辑一个对象。
sid,对象的 SID。data(dict),用于提交的 JSON 字典数据。更多信息请参阅 https://docs.labii.com/api/methodsquery(可选),附加查询以限制结果。
# modify the name of a project
labii.Project.modify(
sid="psvy0a40x18c0rwBGLQV1",
data={"name": "new name"}
)
delete
删除一个对象。
sid,对象的 SID。query(可选),附加查询以限制结果。
信息
并非所有对象都可以被删除。如果对象无法删除,将显示 405 错误。
# remove the permission of a user
labii.ProjectMember.delete("psvy0a40x18c0rwBGLQV1")
文件操作
Labii 还开发了一些功能,以方便文件上传。
upload
将文件上传到 Labii。
file_path,文件的完整路径。projects,格式为 [{"sid": "project__sid"}] 的项目列表。
# upload a file
from labii_sdk.sdk import LabiiObject
labii = LabiiObject(api_key="xxx", organization__sid="xxx")
file_record = labii.upload("/tmp/test.txt", [{"sid":"xxx"}])
watch_folder
您可以使用此功能监视特定文件夹。一旦文件存在,该功能将上传每个文件到 Labii,并将文件移动到 "uploaded" 子文件夹。此功能允许您自动上传由机器/设备生成的文件。
信息
使用此功能需要版本 1.9 或更高版本。
folder_path,必需,要监视的文件夹(包括路径),默认为当前路径。projects,必需,格式为 [{"sid": "project__sid"}] 的项目列表。interval,可选,检查文件夹的时间间隔,默认为 5 秒。
// Watch a results folder
from labii_sdk.sdk import LabiiObject
labii = LabiiObject(api_key="xxx", organization__sid="xxx")
labii.watch_folder(folder_path="./results", [{"sid":"xxx"}])
其他
切换组织
使用此功能可以无缝切换到不同的组织。这在从测试组织切换到生产组织时特别有用。
// switch organization
from labii_sdk.sdk import LabiiObject
labii = LabiiObject(api_key="xxx", organization__sid="xxx")
labii.switch_organization(organization__sid)
获取列
在生成新记录时,通常需要列 SID 来准备数据对象。在 Python 中,获取数组中对象的索引并不总是简单的任务。因此,我们开发了此功能,以简化使用 Labii SDK 进行编码的过程。
from labii_sdk.sdk import LabiiObject
labii = LabiiObject(api_key="xxx", organization__sid="xxx")
# get sample table
table = labii.Table.list(query="name_singular=sample", serializer="name")["results"][0]
columns = labii.get_columns(f"table__sid={table['sid']}&name__in=volume,concentration,storage")
print(columns)
{
"volume": "70cf0a40x459cb9dinsxCH",
"concentration": "9beh0a40x459cdafkpuzEJ",
"source_samples": "0cfi0a40x459cebglqvAFK",
"storage": "behk0a40x459d0dinsxCHM",
"storage_coordinates": "cfil0a40x459d1ejotyDIN"
}