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/'
AUTH_TOKEN can be found following these steps:
-
click the "Base extensions" icon on the top right:
-
click "Customize" on the bottom right
-
click "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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.