Skip to main content

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'})

Metadata

Release files for bitable 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bitable 1.0.3
File Size Uploaded Provenance Actions
bitable-1.0.3.tar.gz 8.0 kB Without provenance Details for bitable-1.0.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for bitable 1.0.3
File Interpreter ABI Platform Actions
bitable-1.0.3-py3-none-any.whl Python 3 none any Details for bitable-1.0.3-py3-none-any.whl

Total release size: 17.2 kB

Release files / bitable-1.0.3.tar.gz

Download URL bitable-1.0.3.tar.gz
Size 8.0 kB
Tags Source
SHA-256 checksum
How to use checksums
551c9cb387e15ec947cab645d07de5e3122cafac783686f54f89810aca959d3a
BLAKE2b-256 checksum
How to use checksums
537722cf17b18e94675ca215e161503829fcbfd3b6b7aabbaaa7158dd68a39b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.4

Release files / bitable-1.0.3-py3-none-any.whl

Download URL bitable-1.0.3-py3-none-any.whl
Size 9.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30a2fff497de6687957d34b0bb3f7cc15846d0f60af4f72fd1835db5ddbff844
BLAKE2b-256 checksum
How to use checksums
4827f6ff5ed7d142f7227866bbf4e3ab74baaa3e3b5641a0b9b31db2cfc52490
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.4

Security for bitable 1.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page