https://github.com/vaphes/pocketbase
PocketBase client SDK for python
https://github.com/vaphes/pocketbase
client database pocketbase python sdk
Last synced: 7 days ago
JSON representation
PocketBase client SDK for python
- Host: GitHub
- URL: https://github.com/vaphes/pocketbase
- Owner: vaphes
- License: mit
- Created: 2022-09-19T14:53:14.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-08-27T15:04:11.000Z (5 months ago)
- Last Synced: 2025-12-08T08:50:09.527Z (about 2 months ago)
- Topics: client, database, pocketbase, python, sdk
- Language: Python
- Homepage: https://pypi.org/project/pocketbase/
- Size: 239 KB
- Stars: 514
- Watchers: 8
- Forks: 58
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-pocketbase - GitHub
- awesome-pocketbase - Python (Sync) - PocketBase Client in Python.  (Unofficial PocketBase Clients (SDKs))
- awesome-rainmana - vaphes/pocketbase - PocketBase client SDK for python (Python)
README
# PocketBase Python SDK
[](https://github.com/vaphes/pocketbase/actions/workflows/tests.yml)
[](https://coveralls.io/github/vaphes/pocketbase?branch=master)
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:
```shell
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!
```python
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](https://pocketbase.io/docs/api-authentication). 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.
```python
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:
```shell
poetry install
```
Or can build and generate a package:
```shell
poetry build
```
But if you are using only PIP, use this command:
```shell
python3 -m pip install -e .
```
## Tests
To execute the tests use this command:
```
poetry run pytest
```
## 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:
```bash
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.