Client for the baserow.io API.
Project description
baserow-client
A Python client for Baserow.io with simple ORM capabilities.
Note: This package is currently under development. Some APIs may break without prior notice.
Installation
$ pip install baserow-client
Getting started
BaserowClient
The Baserow client provides direct access to many of the Baserow API endpoints. It must be initialized with the URL to your Baserow instance as well as a JWT or Token. Without authentication, the client may still be used to generate a JWT from user credentials.
from baserow.client import BaserowClient
client = BaserowClient('https://baserow.io', jwt='...')
client = BaserowClient('https://baserow.io', token='...')
client = BaserowClient('https://baserow.io')
user, jwt = client.token_auth('username', 'password')
If you use the login()
method instead of token_auth()
, the JWT will be installed into the same client
right away.
Operations that require a JWT
Meta operations such as listing available applications, tables, fields or creating/updating/deleting databases, etc. require a JWT.
Examples
for db in client.list_all_applications():
print(db, [t.name for t in db.tables])
for table in client.list_database_tables(13):
print(table)
for field in client.list_database_table_fields(45):
print(field)
Create/Read/Update/Delete rows
These operations do not require a JWT and can be performed with a long-lived token instead, which can be created from the Baserow UI. The Baserow Python client currently supports reading data only.
Examples
is_john_smith = Column('field_281').equal('John Smith')
page = client.list_database_table_rows(45, filter=[is_john_smith])
print(page.results)
You can use the paginate_database_table_rows()
convenience method to receive an iterator for all pages.
Object-relational mapper
The Baserow Python client comes with basic ORM capabilities.
Note: The ORM API is not Mypy compatible. Support could be added by implementing a Mypy plugin.
Define models
# myapp/models.py
from baserow.orm import Column, ForeignKey, Model
class Product(Model):
name = Column('Name')
price = Column('Price')
class Customer(Model):
name = Column('Name')
favorite_products = ForeignKey('Favorite Products', Product)
Generate a database mapping
Because the database schema cannot be introspected using a normal token, it is necessary to generate a mapping for the ORM using a JWT. The easiest way to do this is to use the Baserow ORM command-line interface.
$ python -m baserow.orm \
'My web shop' myapp.models.Product:Produces myapp.models.Customer:Customers \
--url https://baserow.io --user my-email@example.org --write-to var/conf/mapping.json
You can specify --password '...'
to avoid the password prompt, or directly pass a JWT with --jwt '...'
.
Database connection
# myapp/__main__.py
from baserow.client import BaserowClient
from baserow.orm import Database, DatabaseMapping
from .models import Product, Customer
client = BaserowClient('https://baserow.io', token='...')
db = Database(client, DatabaseMapping.load('var/data/mapping.json'))
for customer in db.select(Customer).filter(customer.name.contains('Alice')):
print(f'{customer.name} likes:')
for product in customer.favorite_products:
print(f'- {product.name}')
Copyright © 2021 Niklas Rosenstein
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file baserow-client-0.2.0.tar.gz
.
File metadata
- Download URL: baserow-client-0.2.0.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6e4e0da0a13408d78973ad4c030f539737a5bd30d7af0d85b4ee676543fa571 |
|
MD5 | 5ffe8415f169646e65d7bcc86c4e34a6 |
|
BLAKE2b-256 | 829620edf1bd4c9d898d0d8ab2125a8788a27becdcf93283c5803708221cfdb8 |
File details
Details for the file baserow_client-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: baserow_client-0.2.0-py3-none-any.whl
- Upload date:
- Size: 14.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f12de7ca3ffb6a42d0ac0f1834b8f0197dd0d46b1ae4e775101774690aafe1c |
|
MD5 | ccd559102f4655da68eb51965f2905e3 |
|
BLAKE2b-256 | 55875f948ff29db87378bf8cf4c5575a4da50e353ccca6b0fe7cff1fc086483c |