PocketBase Python SDK
Python client SDK for the PocketBase backend.
This is in early development, and at first is just a translation of the javascript lib using HTTPX.
Installation
Install PocketBase using PIP:
python3 -m pip install pocketbase
Usage
The rule of thumb here is just to use it as you would the javascript lib, but in a pythonic way of course!
from pocketbase import PocketBase # Client also works the same from pocketbase.client import FileUpload client = PocketBase('http://127.0.0.1:8090') # authenticate as regular user user_data = client.collection("users").auth_with_password( "user@example.com", "0123456789") # check if user token is valid user_data.is_valid # or as admin admin_data = client.admins.auth_with_password("test@example.com", "0123456789") # check if admin token is valid admin_data.is_valid # list and filter "example" collection records result = client.collection("example").get_list( 1, 20, {"filter": 'status = true && created > "2022-08-01 10:00:00"'}) # create record and upload file to image field result = client.collection("example").create( { "status": "true", "image": FileUpload(("image.png", open("image.png", "rb"))), }) # and much more...
More detailed API docs and copy-paste examples could be found in the API documentation for each service. Just remember to 'pythonize it' 🙃.
Note: By default, camelCase (or any other key style) from the API is converted to snake_case in Python. You can keep the original keys by setting auto_snake_case=False when creating the client.
from pocketbase import Client client = Client(auto_snake_case=False) # Fields will keep their original names from the API
Development
These are the requirements for local development:
- Python 3.9+
- Poetry (https://python-poetry.org/)
You can install locally:
Or can build and generate a package:
But if you are using only PIP, use this command:
python3 -m pip install -e .Tests
To execute the tests use this command:
Sandbox integration testing
A lot of real-world integration test against a sandboxed pocketbase instance will be included in the pytest when the sandbox is running (on 127.0.0.1:8090) to start the sandbox follow the following steps:
export TMP_EMAIL_DIR=`mktemp -d` # Export temp dir used for sendmail sandbox bash ./tests/integration/pocketbase # Run the pocketbase sandbox (automatically downloads the latest pocketbase instance) pytest # Run test including sandbox API integration tests
License
The PocketBase Python SDK is MIT licensed code.