Skip to main content

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


Download files

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

Source Distribution

baserow-client-0.2.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

baserow_client-0.2.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

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

Hashes for baserow-client-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c6e4e0da0a13408d78973ad4c030f539737a5bd30d7af0d85b4ee676543fa571
MD5 5ffe8415f169646e65d7bcc86c4e34a6
BLAKE2b-256 829620edf1bd4c9d898d0d8ab2125a8788a27becdcf93283c5803708221cfdb8

See more details on using hashes here.

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

Hashes for baserow_client-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5f12de7ca3ffb6a42d0ac0f1834b8f0197dd0d46b1ae4e775101774690aafe1c
MD5 ccd559102f4655da68eb51965f2905e3
BLAKE2b-256 55875f948ff29db87378bf8cf4c5575a4da50e353ccca6b0fe7cff1fc086483c

See more details on using hashes here.

Supported by

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