Skip to main content

A Python package to operate with Feishu/Lark bitable

Project description

python-bitable

A Python package to operate with Feishu/Lark bitable

Install

pip install bitable

Usage

Quick Start

from bitable import Table

table = Table(BASE_ID, AUTH_TOKEN, 'TABLE_NAME')
# you may also use table_id: Table(BASE_ID, AUTH_TOKEN, table_id=TABLE_ID)

# select records
records = table.select() # select all records
records = table.select({'field_name1': 'value1', 'field_name2': 'value2'}) # select with conditions
records = table.select(Greater('FieldValue', 90))
records = table.select(Or(Greater('FieldValue', 90), And({'FieldSingle': 'A'}, Contain('FieldText', 'text_value')))) # select with complex conditions

# insert records
table.insert({'field_name1': 'value1', 'field_name2': 'value2'}) # insert a record
table.insert([{'field_name1': 'value1', 'field_name2': 'value2'}, {'field_name1': 'value3', 'field_name2': 'value4'}]) # insert multiple records

# update records
table.update({'FieldMultiple': ['B', 'A'], 'FieldDate':'2024-12-21'}, where={'FieldText': 'text_value'}) # update records with where conditions
result = table.select({'FieldText': 'HelloTestUpdate'})[0]
result['FieldText'] = 'new_value'
table.update(result) # update records with record object

# delete records
self.table.delete(where={'FieldText': 'HelloDelete'}) # with where condition
result = table.select({'FieldText': 'HelloTestUpdate'})[0]
self.table.delete(results) # with selected object

Load a table

from bitable import Table

table = Table(BASE_ID, BASE_TOKEN, 'TABLE_NAME')

BASE_ID can be found at the bitable's URL after 'base/'
BASE_ID on URL

AUTH_TOKEN can be found following these steps:

  1. click the "Base extensions" icon on the top right:

  2. click "Customize" on the bottom right Base extension and customize

  3. click "Get Authorization Code" Get Authorization Code

Select Records

select all records with just select():

records = table.select()

every record is a dict of field name => value. With '_id' key for the record id additionally.

simple conditions like x==y can be passed in as a dict:

records = table.select({'field_name1': 'value1', 'field_name2': 'value2'})  

use operators to construct complex conditions:

records = table.select(Greater('FieldValue', 90))
records = table.select(Or(Greater('FieldValue', 90), And({'FieldSingle': 'A'}, Contain('FieldText', 'text_value'))))

list of operators:

  • Equal: "==" operator
  • Not: "!=" operator
  • Contain: if a string field contains a substring, or a multiple-select field contains an element
  • NotContain
  • Empty
  • NotEmpty
  • Greater: ">" operator
  • GreaterEqual ">=" operator
  • Less
  • LessEqual

for date fields, use 'YYYY-mm-dd' format, or one of the following: Today(), Yesterday(), Tomorrow(), CurrentWeek(), LastWeek(), CurrentMonth(), LastMonth(), Past7Days(), Next7Days(), Past30Days(), Next30Days()

Insert Records

insert a record with insert():

table.insert({'field_name1': 'value1', 'field_name2': 'value2'})

insert multiple records with a list:

table.insert([{'field_name1': 'value1', 'field_name2': 'value2'}, {'field_name1': 'value3', 'field_name2': 'value4'}])

Update Records

if record is a record dict selected from the table, you can change its content, and update it with update():

(in fact, it uses '_id' key to locate the record)

table.update(record)

you can also update records with where conditions:

table.update({'field_name1': 'new_value1', 'field_name2':'new_value2'}, where={'condition_field_name': 'text_value'})

Delete Records

delete a record selected from the table with delete():

(similar to update(), it uses '_id' key to locate which record to delete)

table.delete(record)

batch delete records with where conditions:

table.delete(where={'field_name': 'field_value'})

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bitable-1.0.3.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bitable-1.0.3-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file bitable-1.0.3.tar.gz.

File metadata

  • Download URL: bitable-1.0.3.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for bitable-1.0.3.tar.gz
Algorithm Hash digest
SHA256 551c9cb387e15ec947cab645d07de5e3122cafac783686f54f89810aca959d3a
MD5 e1131e83d66305f58e5fbaaf25f23f78
BLAKE2b-256 537722cf17b18e94675ca215e161503829fcbfd3b6b7aabbaaa7158dd68a39b5

See more details on using hashes here.

File details

Details for the file bitable-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: bitable-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for bitable-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 30a2fff497de6687957d34b0bb3f7cc15846d0f60af4f72fd1835db5ddbff844
MD5 a5d0bf7459a6c27b10d64d2bfa17d07a
BLAKE2b-256 4827f6ff5ed7d142f7227866bbf4e3ab74baaa3e3b5641a0b9b31db2cfc52490

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page