Skip to main content

Python SDK for libSQL

Project description

Python SDK for libSQL

API reference | Github | PyPI

This is the source repository of the Python SDK for libSQL. You can either connect to a local SQLite database or to a remote libSQL server (sqld).

NOTE: If you want to use libSQL with SQLAlchemy, you should check out the libSQL dialect.

Installation

pip install libsql-client

Getting Started

Connecting to a local SQLite database:

import asyncio
import libsql_client

async def main():
    url = "file:local.db"
    async with libsql_client.create_client(url) as client:
        result_set = await client.execute("SELECT * from users")
        print(len(result_set.rows), "rows")
        for row in result_set.rows:
            print(row)

asyncio.run(main())

To connect to a remote libSQL server (sqld), just change the URL:

url = "ws://localhost:8080"

Supported URLs

The client can connect to the database using different methods depending on the scheme (protocol) of the passed URL:

  • file: connects to a local SQLite database (using the builtin sqlite3 package)
    • file:/absolute/path or file:///absolute/path is an absolute path on local filesystem
    • file:relative/path is a relative path on local filesystem
    • (file://path is not a valid URL)
  • ws: or wss: connect to sqld using WebSockets (the Hrana protocol).
  • http: or https: connect to sqld using HTTP. The transaction() API is not available in this case.
  • libsql: is equivalent to wss:.

Synchronous API

This package also provides a synchronous version of the client, which can be created by calling create_client_sync(). It supports the same methods as the default asyncio client, except that they block the calling thread:

import libsql_client

url = "file:local.db"
with libsql_client.create_client_sync(url) as client:
    result_set = client.execute("SELECT * from users")
    print(len(result_set.rows), "rows")
    for row in result_set.rows:
        print(row)

The synchronous client is just a thin wrapper around the asynchronous client, but it runs the event loop in a background thread.

Contributing to this package

First, please install Python and Poetry. To install all dependencies for local development to a virtual environment, run:

poetry install --with dev

To run the tests, use:

poetry run pytest

To check types with MyPy, use:

poetry run mypy

License

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in libsql-client by you, shall be licensed as MIT, without any additional terms or conditions.

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

libsql_client-0.3.1.tar.gz (39.6 kB view details)

Uploaded Source

Built Distribution

libsql_client-0.3.1-py3-none-any.whl (46.1 kB view details)

Uploaded Python 3

File details

Details for the file libsql_client-0.3.1.tar.gz.

File metadata

  • Download URL: libsql_client-0.3.1.tar.gz
  • Upload date:
  • Size: 39.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Darwin/23.4.0

File hashes

Hashes for libsql_client-0.3.1.tar.gz
Algorithm Hash digest
SHA256 1815893bf5271f1940919b2a583ebbafb0ec54028e9d01e4eda151a6e85a8618
MD5 2b38630440ff1d1bbd8cf88e947f41ff
BLAKE2b-256 d2768968356d45ee174ebe966ff0112bed1bd932851d6532737c2ee8b40ed6e0

See more details on using hashes here.

File details

Details for the file libsql_client-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: libsql_client-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 46.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Darwin/23.4.0

File hashes

Hashes for libsql_client-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 088756f65802f5ca5857a99cf374d9b7aa015b97b91b0cb725ef6a033e23268b
MD5 385444323e427f1907c65f5d6136318f
BLAKE2b-256 83f0b0d7c7331f975bcc3effd01abb094723891fd42bca7f702b4a0cf06c1bff

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