Skip to main content

Async PostgreSQL driver for Python written in Rust

Project description

PyPI - Python Version PyPI PyPI - Downloads

PSQLPy - Async PostgreSQL driver for Python written in Rust.

Driver for PostgreSQL written fully in Rust and exposed to Python. The project is under active development and we cannot confirm that it's ready for production. Anyway, We will be grateful for the bugs found and open issues. Stay tuned. Normal documentation is in development.

Installation

You can install package with pip or poetry.

poetry:

> poetry add psqlpy

pip:

> pip install psqlpy

Or you can build it by yourself. To do it, install stable rust and maturin.

> maturin develop --release

Usage

Usage is as easy as possible. Create new instance of PSQLPool, startup it and start querying.

from typing import Any

from psqlpy import PSQLPool, QueryResult


db_pool = PSQLPool(
    username="postgres",
    password="pg_password",
    host="localhost",
    port=5432,
    db_name="postgres",
    max_db_pool_size=2,
)

async def main() -> None:
    await db_pool.startup()

    res: QueryResult = await db_pool.execute(
        "SELECT * FROM users",
    )

    print(res.result())
    # You don't need to close Database Pool by yourself,
    # rust does it instead.

Please take into account that each new execute gets new connection from connection pool.

DSN support

You can separate specify host, port, username, etc or specify everything in one DSN. Please note that if you specify DSN any other argument doesn't take into account.

from typing import Any

from psqlpy import PSQLPool, QueryResult


db_pool = PSQLPool(
    dsn="postgres://postgres:postgres@localhost:5432/postgres",
    max_db_pool_size=2,
)

async def main() -> None:
    await db_pool.startup()

    res: QueryResult = await db_pool.execute(
        "SELECT * FROM users",
    )

    print(res.result())
    # You don't need to close Database Pool by yourself,
    # rust does it instead.

Control connection recycling

There are 3 available options to control how a connection is recycled - Fast, Verified and Clean. As connection can be closed in different situations on various sides you can select preferable behavior of how a connection is recycled.

  • Fast: Only run is_closed() when recycling existing connections.
  • Verified: Run is_closed() and execute a test query. This is slower, but guarantees that the database connection is ready to be used. Normally, is_closed() should be enough to filter out bad connections, but under some circumstances (i.e. hard-closed network connections) it's possible that is_closed() returns false while the connection is dead. You will receive an error on your first query then.
  • Clean: Like [Verified] query method, but instead use the following sequence of statements which guarantees a pristine connection:
    CLOSE ALL;
    SET SESSION AUTHORIZATION DEFAULT;
    RESET ALL;
    UNLISTEN *;
    SELECT pg_advisory_unlock_all();
    DISCARD TEMP;
    DISCARD SEQUENCES;
    
    This is similar to calling DISCARD ALL. but doesn't call DEALLOCATE ALL and DISCARD PLAN, so that the statement cache is not rendered ineffective.

Results from querying

You have some options to get results from the query. execute() method, for example, returns QueryResult and this class can be converted into list of dicts - list[dict[Any, Any]] or into any Python class (pydantic model, as an example).

Let's see some code:

from typing import Any

from pydantic import BaseModel
from psqlpy import PSQLPool, QueryResult


class ExampleModel(BaseModel):
    id: int
    username: str


db_pool = PSQLPool(
    dsn="postgres://postgres:postgres@localhost:5432/postgres",
    max_db_pool_size=2,
)

async def main() -> None:
    await db_pool.startup()

    res: QueryResult = await db_pool.execute(
        "SELECT * FROM users",
    )

    pydantic_res: list[ExampleModel] = res.as_class(
        as_class=ExampleModel,
    )

Query parameters

You can pass parameters into queries. Parameters can be passed in any execute method as the second parameter, it must be a list. Any placeholder must be marked with $< num>.

    res: QueryResult = await db_pool.execute(
        "SELECT * FROM users WHERE user_id = $1 AND first_name = $2",
        [100, "RustDriver"],
    )

Connection

You can work with connection instead of DatabasePool.

from typing import Any

from psqlpy import PSQLPool, QueryResult


db_pool = PSQLPool(
    username="postgres",
    password="pg_password",
    host="localhost",
    port=5432,
    db_name="postgres",
    max_db_pool_size=2,
)

async def main() -> None:
    await db_pool.startup()

    connection = await db_pool.connection()

    res: QueryResult = await connection.execute(
        "SELECT * FROM users",
    )

    print(res.result())
    # You don't need to close connection by yourself,
    # rust does it instead.

Transactions

Of course it's possible to use transactions with this driver. It's as easy as possible and sometimes it copies common functionality from PsycoPG and AsyncPG.

Transaction parameters

In process of transaction creation it is possible to specify some arguments to configure transaction.

  • isolation_level: level of the isolation. By default - None.
  • read_variant: read option. By default - None.
  • deferrable: deferrable option. By default - None.

You can use transactions as async context managers

By default async context manager only begins and commits transaction automatically.

from typing import Any

from psqlpy import PSQLPool, IsolationLevel, QueryResult


db_pool = PSQLPool()

async def main() -> None:
    await db_pool.startup()

    connection = await db_pool.connection()
    async with connection.transaction() as transaction:
        res: QueryResult = await transaction.execute(
            "SELECT * FROM users",
        )

    print(res.result())
    # You don't need to close Database Pool by yourself,
    # rust does it instead.

Or you can control transaction fully on your own.

from typing import Any

from psqlpy import PSQLPool, IsolationLevel


db_pool = PSQLPool()

async def main() -> None:
    await db_pool.startup()

    connection = await db_pool.connection()
    transaction = connection.transaction(
        isolation_level=IsolationLevel.Serializable,
    )

    await transaction.begin()
    await transaction.execute(
        "INSERT INTO users VALUES ($1)",
        ["Some data"],
    )
    # You must commit the transaction by your own
    # or your changes will be vanished.
    await transaction.commit()
    # You don't need to close Database Pool by yourself,
    # rust does it instead.

Transactions can be rolled back

You must understand that rollback can be executed only once per transaction. After it's execution transaction state changes to done. If you want to use ROLLBACK TO SAVEPOINT, see below.

from typing import Any

from psqlpy import PSQLPool, IsolationLevel


db_pool = PSQLPool()

async def main() -> None:
    await db_pool.startup()

    connection = await db_pool.connection()
    transaction = connection.transaction(
        isolation_level=IsolationLevel.Serializable,
    )

    await transaction.begin()
    await transaction.execute(
        "INSERT INTO users VALUES ($1)",
        ["Some data"],
    )
    await transaction.rollback()

Transaction execute many

You can execute one statement with multiple pararmeters. The query will be executed with all parameters or will not be executed at all.

from typing import Any

from psqlpy import PSQLPool, IsolationLevel


db_pool = PSQLPool()

async def main() -> None:
    await db_pool.startup()

    connection = await db_pool.connection()
    transaction = connection.transaction(
        isolation_level=IsolationLevel.Serializable,
    )

    await transaction.begin()
    await transaction.execute_many(
        "INSERT INTO users VALUES ($1)",
        [["first-data"], ["second-data"], ["third-data"]],
    )
    await transaction.commit()

Transaction fetch row

You can fetch first row.

from typing import Any

from psqlpy import PSQLPool, IsolationLevel


db_pool = PSQLPool()

async def main() -> None:
    await db_pool.startup()

    connection = await db_pool.connection()
    transaction = connection.transaction(
        isolation_level=IsolationLevel.Serializable,
    )

    await transaction.begin()
    first_row = await transaction.fetch_row(
        "SELECT * FROM users WHERE user_id = $1",
        ["user-id"],
    )
    first_row_result = first_row.result()  # This will be a dict.

Transaction pipelining

When you have a lot of independent queries and want to execute them concurrently, you can use pipeline. Pipelining can improve performance in use cases in which multiple, independent queries need to be executed. In a traditional workflow, each query is sent to the server after the previous query completes. In contrast, pipelining allows the client to send all of the queries to the server up front, minimizing time spent by one side waiting for the other to finish sending data:

           Sequential                              Pipelined
| Client         | Server          |    | Client         | Server          |
|----------------|-----------------|    |----------------|-----------------|
| send query 1   |                 |    | send query 1   |                 |
|                | process query 1 |    | send query 2   | process query 1 |
| receive rows 1 |                 |    | send query 3   | process query 2 |
| send query 2   |                 |    | receive rows 1 | process query 3 |
|                | process query 2 |    | receive rows 2 |                 |
| receive rows 2 |                 |    | receive rows 3 |                 |
| send query 3   |                 |
|                | process query 3 |
| receive rows 3 |                 |

Read more: https://docs.rs/tokio-postgres/latest/tokio_postgres/#pipelining

Let's see some code:

import asyncio

from psqlpy import PSQLPool, QueryResult


async def main() -> None:
    db_pool = PSQLPool()
    await db_pool.startup()

    transaction = await db_pool.transaction()

    results: list[QueryResult] = await transaction.pipeline(
        queries=[
            (
                "SELECT username FROM users WHERE id = $1",
                [100],
            ),
            (
                "SELECT some_data FROM profiles",
                None,
            ),
            (
                "INSERT INTO users (username, id) VALUES ($1, $2)",
                ["PSQLPy", 1],
            ),
        ]
    )

Transaction ROLLBACK TO SAVEPOINT

You can rollback your transaction to the specified savepoint, but before it you must create it.

from typing import Any

from psqlpy import PSQLPool, IsolationLevel


db_pool = PSQLPool()

async def main() -> None:
    await db_pool.startup()

    connection = await db_pool.connection()
    transaction = connection.transaction(
        isolation_level=IsolationLevel.Serializable,
    )

    await transaction.begin()
    # Create new savepoint
    await transaction.savepoint("test_savepoint")

    await transaction.execute(
        "INSERT INTO users VALUES ($1)",
        ["Some data"],
    )
    # Rollback to specified SAVEPOINT.
    await transaction.rollback_to("test_savepoint")

    await transaction.commit()

Transaction RELEASE SAVEPOINT

It's possible to release savepoint

from typing import Any

from psqlpy import PSQLPool, IsolationLevel


db_pool = PSQLPool()

async def main() -> None:
    await db_pool.startup()

    connection = await db_pool.connection()
    transaction = connection.transaction(
        isolation_level=IsolationLevel.Serializable,
    )

    await transaction.begin()
    # Create new savepoint
    await transaction.savepoint("test_savepoint")
    # Release savepoint
    await transaction.release_savepoint("test_savepoint")

    await transaction.commit()

Cursors

Library supports PostgreSQL cursors.

Cursors can be created only in transaction. In addition, cursor supports async iteration.

Cursor parameters

In process of cursor creation you can specify some configuration parameters.

  • querystring: query for the cursor. Required.
  • parameters: parameters for the query. Not Required.
  • fetch_number: number of records per fetch if cursor is used as an async iterator. If you are using .fetch() method you can pass different fetch number. Not required. Default - 10.
  • scroll: set SCROLL if True or NO SCROLL if False. Not required. By default - None.
from typing import Any

from psqlpy import PSQLPool, IsolationLevel, QueryResult


db_pool = PSQLPool()

async def main() -> None:
    await db_pool.startup()

    connection = await db_pool.connection()
    transaction = connection.transaction(
        isolation_level=IsolationLevel.Serializable,
    )

    await transaction.begin()
    # Create new savepoint
    cursor = await transaction.cursor(
        querystring="SELECT * FROM users WHERE username = $1",
        parameters=["SomeUserName"],
        fetch_number=100,
    )

    # You can manually fetch results from cursor
    results: QueryResult = await cursor.fetch(fetch_number=8)

    # Or you can use it as an async iterator.
    async for fetched_result in cursor:
        print(fetched_result.result())

    # If you want to close cursor, please do it manually.
    await cursor.close()

    await transaction.commit()

Cursor operations

Available cursor operations:

  • FETCH count - cursor.fetch(fetch_number=)
  • FETCH NEXT - cursor.fetch_next()
  • FETCH PRIOR - cursor.fetch_prior()
  • FETCH FIRST - cursor.fetch_first()
  • FETCH LAST - cursor.fetch_last()
  • FETCH ABSOLUTE - cursor.fetch_absolute(absolute_number=)
  • FETCH RELATIVE - cursor.fetch_relative(relative_number=)
  • FETCH FORWARD ALL - cursor.fetch_forward_all()
  • FETCH BACKWARD backward_count - cursor.fetch_backward(backward_count=)
  • FETCH BACKWARD ALL - cursor.fetch_backward_all()

Extra Types

Sometimes it's impossible to identify which type user tries to pass as a argument. But Rust is a strongly typed programming language so we have to help.

Extra Type in Python Type in PostgreSQL Type in Rust
SmallInt SmallInt i16
Integer Integer i32
BigInt BigInt i64
PyUUID UUID Uuid
PyJSON JSON, JSONB Value
from typing import Any

import uuid

from psqlpy import PSQLPool

from psqlpy.extra_types import (
    SmallInt,
    Integer,
    BigInt,
    PyUUID,
    PyJSON,
)


db_pool = PSQLPool()

async def main() -> None:
    await db_pool.startup()

    res: list[dict[str, Any]] = await db_pool.execute(
        "INSERT INTO users VALUES ($1, $2, $3, $4, $5)",
        [
            SmallInt(100),
            Integer(10000),
            BigInt(9999999),
            PyUUID(uuid.uuid4().hex),
            PyJSON(
                [
                    {"we": "have"},
                    {"list": "of"},
                    {"dicts": True},
                ],
            )
        ]
    )

    print(res)
    # You don't need to close Database Pool by yourself,
    # rust does it instead.

Benchmarks

We have made some benchmark to compare PSQLPy, AsyncPG, Psycopg3. Main idea is do not compare clear drivers because there are a few situations in which you need to use only driver without any other dependencies.

So infrastructure consists of:

  1. AioHTTP
  2. PostgreSQL driver (PSQLPy, AsyncPG, Psycopg3)
  3. PostgreSQL v15. Server is located in other part of the world, because we want to simulate network problems.
  4. Grafana (dashboards)
  5. InfluxDB
  6. JMeter (for load testing)

The results are very promising! PSQLPy is faster than AsyncPG at best by 2 times, at worst by 45%. PsycoPG is 3.5 times slower than PSQLPy in the worst case, 60% in the best case.

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

psqlpy-0.2.8.tar.gz (45.8 kB view details)

Uploaded Source

Built Distributions

psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (2.5 MB view details)

Uploaded PyPy manylinux: glibc 2.12+ i686

psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (2.5 MB view details)

Uploaded PyPy manylinux: glibc 2.12+ i686

psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (2.5 MB view details)

Uploaded PyPy manylinux: glibc 2.12+ i686

psqlpy-0.2.8-cp312-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12 Windows x86-64

psqlpy-0.2.8-cp312-none-win32.whl (1.1 MB view details)

Uploaded CPython 3.12 Windows x86

psqlpy-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

psqlpy-0.2.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

psqlpy-0.2.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.6 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

psqlpy-0.2.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

psqlpy-0.2.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

psqlpy-0.2.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl (2.5 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.12+ i686

psqlpy-0.2.8-cp312-cp312-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

psqlpy-0.2.8-cp312-cp312-macosx_10_12_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

psqlpy-0.2.8-cp311-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.11 Windows x86-64

psqlpy-0.2.8-cp311-none-win32.whl (1.1 MB view details)

Uploaded CPython 3.11 Windows x86

psqlpy-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

psqlpy-0.2.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

psqlpy-0.2.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

psqlpy-0.2.8-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

psqlpy-0.2.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

psqlpy-0.2.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl (2.5 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.12+ i686

psqlpy-0.2.8-cp311-cp311-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

psqlpy-0.2.8-cp311-cp311-macosx_10_12_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

psqlpy-0.2.8-cp310-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.10 Windows x86-64

psqlpy-0.2.8-cp310-none-win32.whl (1.1 MB view details)

Uploaded CPython 3.10 Windows x86

psqlpy-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

psqlpy-0.2.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

psqlpy-0.2.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

psqlpy-0.2.8-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

psqlpy-0.2.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

psqlpy-0.2.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (2.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686

psqlpy-0.2.8-cp310-cp310-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

psqlpy-0.2.8-cp310-cp310-macosx_10_12_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

psqlpy-0.2.8-cp39-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.9 Windows x86-64

psqlpy-0.2.8-cp39-none-win32.whl (1.1 MB view details)

Uploaded CPython 3.9 Windows x86

psqlpy-0.2.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

psqlpy-0.2.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

psqlpy-0.2.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

psqlpy-0.2.8-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

psqlpy-0.2.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

psqlpy-0.2.8-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (2.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686

psqlpy-0.2.8-cp38-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.8 Windows x86-64

psqlpy-0.2.8-cp38-none-win32.whl (1.1 MB view details)

Uploaded CPython 3.8 Windows x86

psqlpy-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

psqlpy-0.2.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

psqlpy-0.2.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

psqlpy-0.2.8-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.4 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

psqlpy-0.2.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

psqlpy-0.2.8-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (2.5 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

File details

Details for the file psqlpy-0.2.8.tar.gz.

File metadata

  • Download URL: psqlpy-0.2.8.tar.gz
  • Upload date:
  • Size: 45.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.5.0

File hashes

Hashes for psqlpy-0.2.8.tar.gz
Algorithm Hash digest
SHA256 bc8dfde4c7b5a06936eec5c79bfd3ed40a1df31e21df0043b956bd8507dd5f1b
MD5 f24a7d0b317941f81fdafd50a9ba20c6
BLAKE2b-256 074cb4c23a610b1ec51401ec076e6e1aa4b3b70e4e90a043b523e2dc383fd888

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bcd6dde537fb86aea3fec95c4ac79ebc2eddb090aea0da59e3802bfeeedd6f1b
MD5 21b5c246a6461405f51b4fe9b64ca07b
BLAKE2b-256 71fc309d8a01fb2542b7f8e8f2786a314741eb04e872ba4c068602d88af5e013

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 33d0f0067f5346358fae0c21d12a26f79aaf0beb264576da63f8313177148757
MD5 af760986606ad69fbc4862c807762403
BLAKE2b-256 925b670d4bd145aadb06c76f05822a54474e525f95c2a76f28d2a21c81484296

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 be668dcfe3f0f5c37afd75bd1d8d4b8415a8c7b8d237c498596254292096c25b
MD5 19e2caa98239413b0cb5fee3b26322fa
BLAKE2b-256 e4b09af594cd31c53161cfc34a65acf0c38ac309e5eabed6d1bd7d60f5ef9bc7

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ab5b23ec9a8bb13fa744a8d876b5285c240f331efb7fb3ad3cabb0c830a0495c
MD5 414dbbde6c0a7e9dfc1fbd9c39c75e5d
BLAKE2b-256 588914b34a8956b13c6cf5bd1ec1bfbcc6a9d78974fd41913860516fe0797cdf

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4f27102b1a37d8994504fecb54f3379201cdd538b174747fb025b53cbae628e3
MD5 4055e38fe7147f94e99c726e195f3c32
BLAKE2b-256 0fefbb1cee5f2b9e835233b7ff676761a87774556bf26e99df03b71b41e83e60

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 628566c658ccae172a6c866e23cb1318d13200217b0fa5b018aa9f76538585de
MD5 4730c79f27b3e2f1a135f4da951cea25
BLAKE2b-256 369da375fefeab85ab98a1c5e20fd904c60646c57957f61958fcebcd8319c169

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3dfc9fe7a7737c113aa3b4adfe87f1f686f644a17bd4ca621e6f7a2bf63baa14
MD5 fa9b9af4424288183e677686f202d506
BLAKE2b-256 69482c551dd3981461a235d92beb9909f5b3ea0debc51453f0380b3fe47e2088

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 6247e93a943a3783185093e66016a4eb71addbf0b6291da5cee744493dde2257
MD5 7343cbd4d8311d8b1308a27a9ea53760
BLAKE2b-256 a60de3a3f743062f859e245f35af507da7b7851140b3b7daa715216c5629dbb6

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 990722459f1552b6b07446df1864b6871494cb9cbd093c19b4819c2d98d86491
MD5 cdb471eda7bc141d15b74f9d9c5fa42f
BLAKE2b-256 f83dd74c9e1812ad37f76e35cdfbf515dc51a06fc102050775494e8db3e55507

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3178f10981825f05dae803c1c468ebb69eb5e1e485b95f7c186130dcee4593f3
MD5 79a6909df350a1f31576e9d492f28d72
BLAKE2b-256 605004d444ee3f377133f4628462f7d7c73597b3146c308d4369f5800707d9c2

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 578f3935f2cc51bd2e8051b88c3f76a16c7738fde2cba21ea434ce99933e4611
MD5 9531628853e07b3531003a8d9056695f
BLAKE2b-256 9274c681fe09bf296c1ca6b7d79afd7c3bb65d11585c27f525e58406f765b111

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 dae95bccc470a8acc9b4c67afc18af0ef83eab68c57cf32642aa010f1fca339f
MD5 d885c03f62dcd412529cf5b795397433
BLAKE2b-256 fbbcb3688e91d67395ccddb1f4388802b764ffae349410ac06a0e498a7bb7ed5

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db7f85cc39716619271e9feaf06183ed7fb71713ed2fb462ef4b6e5922ce8699
MD5 35bb4c2fb8f7c07303c30a97363edcc2
BLAKE2b-256 d541e82ae1599943a1d01af39863819263241fd34c14fc6be6e49b5c28c6f587

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d02baa707faa4b4cc9a2b7cb6aa2f91ff7c923ccead64edc7df6e14f978e53d9
MD5 a2299eede84e4b026ed627b7b089e548
BLAKE2b-256 acb539812a5a59ce677055db128525f70c9160cb3a7d6b30e982cf9f5a0a1833

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ed700e491f2105f58e99a378170bcbd40a8f9b77aab9f8d2181d3a2447974a68
MD5 b51c258233d0208ccf9fb87347e5f06c
BLAKE2b-256 0107dfaf03287b8a9c32257a45e088441963bcfc1ab5d36178407c3f85971d2a

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 9bcf8df25706677da38331798f55031af2ce532a8554e5956367cc61175ee55b
MD5 0aa4932f0c9bc61f36cc4462d6c0d4cd
BLAKE2b-256 028402105e7fecc843611977adddfc2ab356d9d23e8b3408a250f1213e5cd98b

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 840c3e0e04d7e4a67f066522bdb0873c0000dc9200c07b5324d9d62290c3a950
MD5 150cbd1f83de4068b2638d0bb5a38e4c
BLAKE2b-256 3b1066e18b2a5d1e50454633bf4314a403a4ef5b5c1fe8e50eaa12c5eed02c46

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 63fb2e7eaab96619e30cec1a1db606c253a3578cdc93b676aa7d90c46e0e0efb
MD5 274df430a3014b45eb405c20f0d46267
BLAKE2b-256 83ce323af59e3af1e3b84f07324211d88178c21490a48d041cc1498f2616b1de

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp312-none-win_amd64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 4d38a6c2b3893101bfa30998f529cf40f517eb7de3949afa450c1a55fee8bb70
MD5 fc7d80c72ab64959a63e4a2702271c18
BLAKE2b-256 241a04d4276537e39e9eb6bcd2cfdae5aed8420c93d370855fdf365e84756ec3

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp312-none-win32.whl.

File metadata

  • Download URL: psqlpy-0.2.8-cp312-none-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.5.0

File hashes

Hashes for psqlpy-0.2.8-cp312-none-win32.whl
Algorithm Hash digest
SHA256 0e287ee3789298e705f15254a628e2014e1b990e22ca499fe0e94fa151bbde8e
MD5 17988e1ab1b651bccaf9cc078d6e72d8
BLAKE2b-256 73bc758ecc773b183f24a0d603a102ba328875bbd56bfa2e34d0f7548c3c636e

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 359b0de6a6ae6dc659c68a13c7cfbad97543e68ee8fc07fbd7b68a56c2d0e38d
MD5 87874b54e3de4303f044b046f5950f9a
BLAKE2b-256 00ddf51cfacdbceff6ba04ca3a9abd1a01199a25f2a2f5298180aee1bd166ad9

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 6805a27f48072ee23c5398142256b1ec085d6c1d684299216538876e98857b99
MD5 8a6745bcd3e8fd63f27c7c3fcbdc9f8a
BLAKE2b-256 de76d4d12d9c6804b45a8d04a8f2bd01cdf41f7fa5a326e329671be07297c18c

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 29f904b05adc812f74d03b449668e37fc0542178b6d746860b584fc6c21a038b
MD5 6e1b332f74fa80c2f80e6517d8fbb073
BLAKE2b-256 1f49f93c78b6af520a939e44ee678ff44efbb872546bf27ddc95400e8a6af1af

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c0bc6a8eed24994140706ac6852b796a6f1b346a8f67dc75ae9dd13e812305d3
MD5 b35cb4cde1fa710be0e7f7411b035985
BLAKE2b-256 bf6f0d54b97e044b92eb21077e4e8e1fe2ebf0134e96a63b1da405b8a4374ec6

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1b6a5e1b946ef48d7f436747c255769977e6b5b258b60d333d05e75d7a18e969
MD5 c2501f91db4a2ae9d74cc52e3d8deb96
BLAKE2b-256 00f6a9d89e25bbff8b263771476a78e5d24e452ab427c2f7ead95dd6918f81e0

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 09b4b6dce40d5a7a658056927790dba72890c94138ebdeef047ba9dffc4783be
MD5 6f9f94ba334acb584477093fe546d2a8
BLAKE2b-256 25b113c9b3041d89db1e527e44a4ab561c2ac06fdc7f499146fc4239aa463ad8

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 33059bc3b6465db013c926ce34425a695126f19a76d9a5ac1212bd7bc2b779af
MD5 2aab989ee239efb64ca79cb37d44b2db
BLAKE2b-256 4903a2eccf3da6333b100a21e04621b461a00ff022cbdaa9124dfff8d2d92cff

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 df0d9dbc5319cda952de7c0ab12c1cde0ccd56d3556bb5da7321a8c689cf23c0
MD5 94810ddc2425e8f1788bd3f7026495f7
BLAKE2b-256 83456d14308590ac12a1850096c6dca673d7dd1f0f879e83e93b924d4cde280e

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp311-none-win_amd64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 14c78178934f13872bbaab6dd0e282fffe4103a093f17bf88d0cba082599162d
MD5 dd87cd371b9d34047480f17f6ac7c54c
BLAKE2b-256 885a46e886dba4ca7fb3c64dec04451ab569432e8888f9fe1f8682c58bbf2b57

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp311-none-win32.whl.

File metadata

  • Download URL: psqlpy-0.2.8-cp311-none-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.5.0

File hashes

Hashes for psqlpy-0.2.8-cp311-none-win32.whl
Algorithm Hash digest
SHA256 6f8aa199ddf8cd1e2c6ad68b3a86bec41ff3b00154f230fb1b148f720c140ea3
MD5 399e59c7edc6063732957488a115cd59
BLAKE2b-256 7556402ad7d2283b0d9753d860adffa2cc9e0fd9b6beb6229670e6a8638fdbf5

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ae5b55e36b43bbd981f404263e363c7cca956449aaf8ab5cf6538d9b3aa56fb1
MD5 e2120beb86baf30b42ac457efaefc4a3
BLAKE2b-256 8b987e44b80dcfcf70d571fd33afb5fb68fa4cbf3bfa34089decb4784adc4410

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 031f76ebf20d89763262d2fd7545a1c3b79e39d33a83aa44d9492365eadcb54f
MD5 a2f5bded9ace1711c3dc75eb42c7866f
BLAKE2b-256 9dec106e5fbaa3e93b0bb6a52f0ac8c13143171f94e9cce32da042fe1afa0adc

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0c9726bf0d6c2c3c6557d62ec72571e7725d3c2ead796510897fb5efd99708c8
MD5 e8d03b18259b0785d9b0a43dfc032e8d
BLAKE2b-256 22f07f2690e2968ee7e24162574f8938867d873352b2bff3d0b71d74a72169ed

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5510f83fd0fc53717b914f7e1589d62b45a4832abb7463448f600069187f3543
MD5 5adc03911dd36a6496612db8c0a2218d
BLAKE2b-256 4cc574539d369fe8dd683cda54ad5dc655d5ae20c0c4feb1d607deb5df1f6124

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a242cfedd1339a5dad99a7af4ddcfde7c734c393045597a787691e2fc7827944
MD5 206d7792566152cf6c0945cfb9c20635
BLAKE2b-256 afa9750fb82b4ae2aab067ea3b6ce6b74abe53f77a4cbe41f2505d1f994c8ccc

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 c1cec1a4bee2f604ea2e2f303756dba46b35c21eca3cf476b324d81335c4e735
MD5 d8fbe6fe0b624e58b501fd359935dd48
BLAKE2b-256 df9ac1ba6ca6d1e4541aec97f7b0feb7c5060e1c0a7b3ec8d95fa9892fdee718

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e6311f1da76da17d32750b63a89237106544e2b8a709851631602e4cc0514ac1
MD5 5a6ff804354a7d517290ab732bb68c2b
BLAKE2b-256 427129bddbe664959df3f0203e6837e32bdeec81b4266dd7c6f1b1cdbf2894f1

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1ef4a234e20b41f814589485f614ba7165ea08180e4ca830eaebd4b9c04cead4
MD5 bdc434629185fe9bdab2d74e67bbe229
BLAKE2b-256 0f4a1368955b1df25dbfa25ba794af44342a2b3036969bd4a65ede7a34d3ae32

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 fdaf24d7dc3afc461b30286edc9a20a5f96e067fa1a4f0e9c79f80d69a0d8a1e
MD5 695f8586a4f6cfc774c5964b4dbd7b76
BLAKE2b-256 21beb8ce99eae7718d95efcad253d4dc9546d4204ab5b7bc978b882a69de921f

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp310-none-win32.whl.

File metadata

  • Download URL: psqlpy-0.2.8-cp310-none-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.5.0

File hashes

Hashes for psqlpy-0.2.8-cp310-none-win32.whl
Algorithm Hash digest
SHA256 18405efe8f1baa07034192c996a1cc4d57656f8e539e093b352c29b47bfbc9b5
MD5 0f6ac557cbd77e2f51e9699adb7faefc
BLAKE2b-256 ec3eeba1967b35d1c930be2e7a0b3fa76dc37e56600a19cd4844c4dc98af5a57

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 98ad398a8988806abe832cfa406068ab212d69d53decdd5a895049899cd6cda3
MD5 722dab4407415c945eaf0cd974ebfa57
BLAKE2b-256 8918fc87ad8bf76ba0006208d65ac94254f48b054a0a4281c9df249517c99a2e

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1dd8e707726b04eaacd92294ef5884c274caf8a525f5df305ad81d186e568b7c
MD5 86ddbb8be7bed9e186ac1012590ace49
BLAKE2b-256 c5b9f42ae8753488130e961db16e9194250629a2e6fc8aa104ef7a3f76c35eb7

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 015d68287b32983c4a2cd8fdd7f01714ab3fd47ec42581d1e5159f679eab33e2
MD5 dee4cab1bb19b0ea0baee190d68bf8af
BLAKE2b-256 50f6f0133792e4f21e948883f7cf86b19145e07419ee0c4990bdba46c2b3154d

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 19e2d7ba4314d44938b33b66cc274da55f2b2f095b25d37cf57e1654bbb8d4e9
MD5 6563628c9c3ff8090513e5aa944a202d
BLAKE2b-256 c6c10da73cbeed30590b32f00ed6146bb90538cf2ed95ac1519b096f1a8a045e

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 707ec5744cb44ba7b41bd69cc29e5e863c0d4bdad5442769781924e6691a8fdb
MD5 4eb654b22139fe8e9911abbffbe2f3d7
BLAKE2b-256 39d9238d9caae0f494eaac2303b28fa62fc0d1fd81fcbe800338d0306b839cb1

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 1809134a0d742a730c18e0b518ffa6617eddfed89039544bc228de8eb7919e86
MD5 150441d8425bcc2efbc7727e47334306
BLAKE2b-256 e68dd6097b27940f7ffa5c4e485b5911984a6a77487e8e5303e77f82ae7b8121

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd2970d188b9fb5447f7e2d75721218db5e91d9da3828030e9219b9205819329
MD5 d6d5e165b89b534a47c3b5ad11cb05db
BLAKE2b-256 3ecbd8413523eb6eaae8bde48ace483ee76257767c1f01abdebac38237af5c3e

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 84bf0033e8bb1c0d1df27e7b8058aede311552f061abccdd735a6fb1d2dd7d23
MD5 13f0fa73652673c61577f0c2af94325f
BLAKE2b-256 79bb86b061df0b3799ae7fda49cb583dd866d918cfe3d6368e400ada451077f8

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp39-none-win_amd64.whl.

File metadata

  • Download URL: psqlpy-0.2.8-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.5.0

File hashes

Hashes for psqlpy-0.2.8-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 15bf30f011c04ab3c44fa3821fcd7276ce4c15955cb604a18b8f18a8d395443b
MD5 c39a3b49453436883acda33af422971f
BLAKE2b-256 f009a1c1a4afe91380edecf62f3f05eb112fba95ebf9d2846cc43635cb62ec1d

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp39-none-win32.whl.

File metadata

  • Download URL: psqlpy-0.2.8-cp39-none-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.5.0

File hashes

Hashes for psqlpy-0.2.8-cp39-none-win32.whl
Algorithm Hash digest
SHA256 0914f502242055b6b48b42a88752f5bc4544cc05326ef7af2b3185dbb86d1726
MD5 34e22d6129eb4ccd56ceb841599fca2d
BLAKE2b-256 bbc24586db3e8b2bc22f040ce54db5b67fc896afcafc677a03f29c2263c108c0

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ba211d4028cd1b7e3ca01931ea6b07041a47dca1b52176569496521c2923af4a
MD5 b7a0cf319a8222dff14ea056c601bed8
BLAKE2b-256 c814ad42cc802e946cbe24bd9f278e5f360030856ebd0cf48218964c7e6f8fa5

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 32e6a5fe30793e18755373532d4578e498340d4f197fb14c8733a2eabc7e7ac2
MD5 a21ce631d2e17720a98c00630bf0ce3c
BLAKE2b-256 e7a1a7fe8aaf1a8699936f694da76366481604dc70b97f280db217619ae19e6a

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 de3074ccd90bf4979e913d95a653ab5a40acee598161dc275eb1da37aa15a6fe
MD5 0633a20eea1d250884ca4190e2a1d083
BLAKE2b-256 e045d83e934a733e0747b43f2bf3f3e40150c24a9d8cf4f9df80e366bb71f7b9

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 89ce6ed49de65dc3b0889b99645ea8e1214e82a80626304fd0ac55a71615553e
MD5 64132a8bc15c4962252888b9a59d2e7d
BLAKE2b-256 c44a6db23f7829f5ab0ff68089e0b4c0e8cc890d33ebbf9c7fb9b0b392e43783

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f50c92b1e9dfc98666e59ae8b5dfd2f7753fbe616219773912729a5f25b812c1
MD5 c9fe9a4040a1a8eadd8b5c4be91df115
BLAKE2b-256 6f14fdbf3d16e7cdd5f0ca7e57c80c7b6766948ad9d7514a8ac1e1febc66db1f

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 91b4bea03300ea40b7e50fec66d95269b872d1b3fe868d4374d03e220b854361
MD5 ed9e7ed19b52996ba9556916ffc2bde2
BLAKE2b-256 fb8e579323d831aae7b9d7299e7e0cce4dfc928f0d832d0dc326874dfc3bd931

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp38-none-win_amd64.whl.

File metadata

  • Download URL: psqlpy-0.2.8-cp38-none-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.5.0

File hashes

Hashes for psqlpy-0.2.8-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 05166a73d39c731b6b25a547ba52604f5ed13cfaa5e2f331f54428daaf1ea9be
MD5 bca8563583a8d5a111bb19621cb3c676
BLAKE2b-256 df2e3512eb8fd6473e150f95a7bc769dcb62ef98969f2208bfe3a9041ee53f95

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp38-none-win32.whl.

File metadata

  • Download URL: psqlpy-0.2.8-cp38-none-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.5.0

File hashes

Hashes for psqlpy-0.2.8-cp38-none-win32.whl
Algorithm Hash digest
SHA256 959665757bd55cabfe73360e7bcc81964d364781fb422559bd16861583aae8c7
MD5 9fc6eecc0fa6e2f3c7bba38bc1ff412e
BLAKE2b-256 c4e18475d6b27a343b68014dabb20affec3cdc051c57754b422ac7c5840e3abd

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6adffbed484220f69a9fccd9da89506cb4ad7aae68efece52cfb7d3e1a5005ae
MD5 eed92f7899775aaf3ab4d1a4cca66da1
BLAKE2b-256 5fcc667584a77f9c29a8a4f424bc5c3a5cb66af3c3259a78fd490df6e4ade92d

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 b60913c20d30a756e040a2fd88a8793e4c53a47f9336f2700a8590aa5d355655
MD5 34c22ecf3be4f27a8eefd7f95e1b2936
BLAKE2b-256 d4692d1369812302f654fbd3325f173ad281756493108a70ef5b637131ec90fc

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 b20ac9799806041e685c9a67656edd781a1327db32d0c5d41fdf9767891b02a4
MD5 1dbf5fba4fd81b3c9ebf796b779717d5
BLAKE2b-256 9e871b963838146aff6922266f882f8c98fc7ac931837e09a25abd01c5d42c81

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3cfe6b30ba0f76985ae453848cae91268eb91997125940f7cef14d080507cf4e
MD5 d498a3d08d1ac3a4b4e29065d88b40f2
BLAKE2b-256 dc5b8d58ca2f67ffcf1c8208b951fcc9884f2569fe4d3724c01d88e630cfaffb

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 741f715850061872a98931209fd30f40117f66bf9467180234d6e85aae9c8071
MD5 3f73261698eb415772498fdcb7a13172
BLAKE2b-256 b4e10b06b07943730e7ea39e6c10a78706b043a804b1698b7c88989958d4447b

See more details on using hashes here.

File details

Details for the file psqlpy-0.2.8-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for psqlpy-0.2.8-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 8cb83f187e6ef3cd2f7e9492959a604dd83dad2f90e3880f7c3e7319197625e6
MD5 4603208e634cbf94984961c210ff091d
BLAKE2b-256 eb1113dd49d63959af34e20965c3c840258ed88ad8f09e37ff4b604b3c38f78c

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