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.9.tar.gz (46.1 kB view details)

Uploaded Source

Built Distributions

psqlpy-0.2.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-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.9-cp312-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 Windows x86

psqlpy-0.2.9-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.9-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.9-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.9-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.9-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.9-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.9-cp312-cp312-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

psqlpy-0.2.9-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.9-cp311-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 Windows x86

psqlpy-0.2.9-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.9-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.9-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.9-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.9-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.9-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.9-cp311-cp311-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

psqlpy-0.2.9-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.9-cp310-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 Windows x86

psqlpy-0.2.9-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.9-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.9-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.9-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.9-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.9-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.9-cp310-cp310-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

psqlpy-0.2.9-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.9-cp39-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 Windows x86

psqlpy-0.2.9-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.9-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.9-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.9-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.9-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.9-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.9-cp38-none-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 Windows x86

psqlpy-0.2.9-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.9-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.9-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.9-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.9-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.9-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.9.tar.gz.

File metadata

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

File hashes

Hashes for psqlpy-0.2.9.tar.gz
Algorithm Hash digest
SHA256 0edcbaabfade0f7d296d7acad9968f5c5031d18c70751af9b2a208497b2515cb
MD5 1d364e68b816ec4e5af43aa17a4eb051
BLAKE2b-256 f61b6bb80ae619a2f241a95a6a432699e83023f9249665dd02279925f7f5f153

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 33ced8a6515d0d4038b0f801e7c9c2b3457e220da1ed32e7f97b9fe88b1ff8a6
MD5 0ec5e6eed3bf48708723d69b017fd1b1
BLAKE2b-256 c35671266a74b5bad8a405c2daacd6e36fe62701fbfb4d210ed54b1a92389ea2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 52063d38acd7390f366e32a2210e6b066b81791c7137df3db9adb5e50a4d6982
MD5 a2d95b9e579ccb1a5741fab3e3ba6b62
BLAKE2b-256 d663c5c94ac6e195fb30ea252002ccce88f89c3884e9ba39c8e54ed3602fc919

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c82052eb0c7b72f8ed3522c642ebc9d8f390fbe6ee61b9b91c7799170b5a502b
MD5 deb33163a8ed1d87ea42c2314c8a6607
BLAKE2b-256 20a771ff239c989ec08030b81639907fc81ed8a2858eba7c5059dea2aa36c564

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 419228cac00412915a027c1bb01bb7d13d4d43bed93d10731f2fc410c5e025e6
MD5 7ad875664069f8b4e82ee31bfb86f23f
BLAKE2b-256 63a3ed66f71ab6d48c29fb18ebe61e87e27a4fb938ba8a97e645cb1b10e6621b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 04f14c51989b6b6fd75625172687cb66be5edee1d70b9796a2a7678fce15a2b6
MD5 e25ec8ac5cb8fc968066a7233e1fddb8
BLAKE2b-256 9a54445557f2a5e35ce614b064080ca2e8b66a021c4a6a35c0ac00bc8b389a9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 16d37291582c1bb657a042dcd85b83d25615d2500af8b01b45088780ef074b3c
MD5 9ca54001b3284085bd51b7cb69fbce5e
BLAKE2b-256 e542bd5ceba3f21f55f6f45fcb48a932ed76adff5f3630f5bcc415391798b08b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 98a47b65d1c40e92e058880faf2f92d5e1ea06a67d7b0df974224d152412e640
MD5 cdbb61b7729850397362b06ffd7d0a63
BLAKE2b-256 7854389ee36eba0a2b5f698125b6bcfaae46456eda6324ecff4767d9f9dfbea0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 95b6c088432454e6b5e5e3518589151ebcff7d1b76e2ddd558abd3b3cac63212
MD5 56d0cfefd36fdbf810d57bff7c7f8c3b
BLAKE2b-256 adf0c6445c3eacbeafb10640393c4758da2931f599e6b5d6a970b500e6b06df7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 1368b40a7c7c293a24845cfd3a5c0816478ba846e5952fb9dfe528be572a5b25
MD5 f45e4f2201bd7a7cc622745936c812b6
BLAKE2b-256 9605450303aa0b1c18e8b6949bb355b65b4557f4857e8a17d65097d332af1af5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0fd1fa4aae53dcfaf870819de8c0a3b013c25bf39c50c9ef08bdff8812be8e66
MD5 d453245c10d3c767def5e21951b5a0d2
BLAKE2b-256 280ea9f6d000edff1965a88fb4d871adbae200700b16dfb635dd0c465e806873

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e427d0406e311450b81aab8ac5e2d3815aa227af69a329907f3bbce9ea5a7000
MD5 b9bad2283f0530fcddaed397b9013081
BLAKE2b-256 bcbf64ad08b44307a16ee07bfcaa380fbeff7e6d54bcdf9b8420ee7653d29f6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 48f96650b44290defe6072fea7ca7ccec7281402b93a9f8c0d58d428cc16968a
MD5 e75f4c02bc5898d78ef05dcaa09a6879
BLAKE2b-256 869ab5c5dd8d35d2bda045f1cd35647496026617e9417c9f3b618e9e6bec8b48

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d638809f70ddaf3d248109fb2f03f128f56f8cac0287ac5ed7db815a998f0de9
MD5 9c96620380131e0183938fd09e7a4c2a
BLAKE2b-256 4455989df59c864b3e7f6d0e423b71c249d0abe3ca301218efa3c61f3b772370

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 70ee6fb4057a51a840da2cb0054d1581b0cdea094eeef64d445237f8d7b3a98b
MD5 0bd5976a6291b05755bb77d24ce41a54
BLAKE2b-256 7039bef94e992a14db409b8d94f408d8a7ab02e53b9f7309a4c5db5f064e8d61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 2aef03b82784efaf6ff2d52cb5478bbc9af0fbf0700f9925e1e88132e1375038
MD5 1f4d56965229bcffc6693b23c0042595
BLAKE2b-256 d13b5aa0d0e0fb107f5e5632771cf5ad0e7229094f64ebb1db5c5e5914f4bb0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 1dad7039b0cbc94923b8e0de0d582eadd500c97af6eb0fe658209fcfbddecb48
MD5 e82cba3c79f03b6ab66eacf76b1d27a2
BLAKE2b-256 84793c237398c21207ac803ed5ea6f53d332e23138ace20908967cd5d127c8ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c7b79850c6e1856879e83dd30d345e459d1a53ee83389cc643f6d4df7705726f
MD5 52a425f397bba8d12dc86179b0ee2522
BLAKE2b-256 5a34f209c86bb24e0838b066a5d5d7ecc8919893fd470eda6afa2111c89d9088

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 430e668e24018f8a509d6471690c372fafb0695dfd7dacd9826a02328b28cc3e
MD5 053e8cac8004a5f8c791d92de8b89aa8
BLAKE2b-256 bcf34e713f30cfe205531353bf65a28aaedd4b9713283cb75baef1e881143a46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 a54501961c9897e68590a17e99f00c2bc48b88464fd4f1245cb9d1bffebd6c88
MD5 16a4ad0dd598dee322056fe33a88b529
BLAKE2b-256 e47e24d730c3dddc263c17baed8ecdd06a5061c7e1c08960e8d9b676e6a295a8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.2.9-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.9-cp312-none-win32.whl
Algorithm Hash digest
SHA256 2c669f1e6ceac9a218d24063e312dfd1abae94aff9d169e8aabf050ee59e3e47
MD5 a571ca26fccf8e911147568f89b2d22c
BLAKE2b-256 61500e6840d59009d5af12be80f0bed2c7104d8bb0bb22918e647c811429a2d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e45335ee48f1d8c6bb48bec0ce2919690ba77f41f8619829591dc42dffc15fac
MD5 ba10645c6fb9e85da8ad62eff9351099
BLAKE2b-256 85344b4bedcb8267903a0bf77d42015645931a0dc7dcf159503514b47c57b646

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 2d5c44f4c611fe44b9bc709b8ad9b284fbc61cf94641ed95b5c124be68e70006
MD5 784a9e864459744d48a652b6691c43a3
BLAKE2b-256 f20dbec738b9260fa4e3a7dbda89f6e26eb32fdc7efcea7af63a2d2369059d7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 f11f3b0c7a87fbf9b99a0e235de2f6040de76f241fab88128dd123631e941b53
MD5 c0fd8a61ebd8a13c352e14c71cb7ad82
BLAKE2b-256 7caa5da937bd7d3f4601c050f56f4b67368c7fef94501e0a2624f8b031a46d55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 4220edc8726524e0db206e12af60c252c5542aa3acfd8f0439b7f2659ae382a3
MD5 2b45f810491dd07237217ed260a687d5
BLAKE2b-256 738edf050c08efd6ae2d26329e3868b763e4655c978025caf541de56ed885a4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4a88db1fe782dcfdc6fa9ee890fc428d1e590a66bdccb25f64458074a218db2f
MD5 2d127bfcd991f933e945b45b6552ed99
BLAKE2b-256 755a9f3d1c529577fb32c426394a698565d1921ac33c5e707e6730179f05699b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 230552e8386629ae3aa0d684b7245f4f879bfb54ef2558c48a2e65d485bc7d70
MD5 adb8d828bc0e90e6fc5040a769274c5d
BLAKE2b-256 ed207d97f879ec63c454f0de0d7573b8f3b6b2d21894ebd31c8c2f5dd1ed3063

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4229778e68f02b499a3dd1fd56b8463e3bccaad12856910afc13b6d767d315ca
MD5 2efa9784fbfa8d9939b557ecd1cf9657
BLAKE2b-256 bde89d0a421200fdda0295500985c5bc77dbccbd26cb280e2f4be8c14557f26c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bc6dded278837cd3647ccadc2314cc73635ae33f7f1caceb9731fa8225b38774
MD5 842934e5bcec7221835c0f9b426252a9
BLAKE2b-256 905c28737a0926a96f9a6c2dafa38794e358e9d894c606e6e9fa3dc7d55a402e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 15478be4cd3b073dd9066d9b6bb278ee53ff46bac9d2ba80bb857269f516f2b5
MD5 5e26896996c51078dd598e814e84d5c6
BLAKE2b-256 2ff1ef7f77a7787c6608e42e2b01bb1c05eb0a0de706e06273dc673c035253b2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.2.9-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.9-cp311-none-win32.whl
Algorithm Hash digest
SHA256 b37e54b588fa9980bc1459bc064834ef644fefecb38f6b377d14058156c5036f
MD5 acfe24b6e5a90f0210a2577b700b838e
BLAKE2b-256 f90fbb878cd68c97b0788f9cdae2be521954b2b71828f456fd280cea72848a6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cdeec4dd24de6598ce11928bc026d59c8b520065e20a0fdfbb4fe479da328b9f
MD5 719d28d9e16893b390f5e7039cc5b234
BLAKE2b-256 0b36000cc84917323b4dd6bbba1af9a2049560bd7f61881149af784ae932271a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 aeb3c44c5d0e599ed0bbc4ae76552c4776143a275769a218e2a94d1521eff861
MD5 517cdb1cb108d0ddd676fd811e058f18
BLAKE2b-256 b3eca2bbd78d4c866c18b57c246c79b693ecb23ea23a4b04522387fa94381a9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 bf33155a86a72965b850b55bc345850763bf0f58b818427960a1032b48df8a88
MD5 9cde68c2baad752dc520035caabc12f8
BLAKE2b-256 4853cf4f1296dbd6ce2213990933e98a492bcde2ea4cf0edb0acca9d07a5c97a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 06fdd3176f5895313b5cbe0cf8c36049e44ca4726365131e2f88b016e14805dc
MD5 2d05eedacabda30d93427fd4665528e0
BLAKE2b-256 8256bec96af672e509afdf18b90d224a286e86b17cba14cf4715fab491e0c114

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e4359ac8fd25d5a4c3a8a9b32869990195e4eb91c5a2fc2d51768a40bf1f206f
MD5 50669a9a9917d2689dd9a683a29e6b93
BLAKE2b-256 a0ab5ef4937bdede7902b4a39a15c0d557e134627b068f2941ddad5d5e20c5c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 cd375fb21c6189b6f1d4c4119559bf31699ec73c51cb1f2deea028398fd83a1d
MD5 05aed198f750d167446f859fb546280a
BLAKE2b-256 2ad0de11e0c9181d79dd78233699cdc77ab83db712115e9e353f2ad824af4f1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6a53885e7b4e40ebf5e22f5fe8c963908d997ad7fab31ebcb4c20d5f0399a0e
MD5 50caaebfd00fc3a4794b190ef80fad50
BLAKE2b-256 5f3d62002c301e7dc470ab95cb20afd40659e943d6830bb09a11feb3aea913e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a6f83b9bbc2b86cdf7b1fe2e1a67767e3028aceb03b3c32e3f7d49b97b6454b0
MD5 33d09905f9b0569d7d6247b7ca22060a
BLAKE2b-256 16a00a51fd621883cba21e7cea812181637414e17e9221e5ac8a1e4a97d82a84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 27272fd54bd8e5752c69e86b510dd3b7167cfd672b82a1aa78c654758c953a41
MD5 edf80d2e54aee1717b3e293467a857f2
BLAKE2b-256 0f155dcb7faa412e2ba73fe1466c09bdbd3306c2d886af2c5fcf38cf1fdb6041

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.2.9-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.9-cp310-none-win32.whl
Algorithm Hash digest
SHA256 3e4d4767fa9e61a42b2acb50a6da374144ff6eb378b7a676d0522c0c683bcfb0
MD5 55dc704cc98a55459e01e483b1a6daef
BLAKE2b-256 e015ba579690613bab8d5013f48e0763ef9e2b0846c0532b202060ec1ac9a268

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ff773094e851e91f84660f070669f2f98aa15b2807839eb331a43dea352f38e6
MD5 050e0b6a2af99d2def0a9accd4284e2c
BLAKE2b-256 f2e13fbdece7f8f91922c37889da01272221cde0e959c5606d0641f4974b86a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 6d3acb4b93733fa0520aa2e26e9e59f0c3012ff2c653e48ef545614d94840801
MD5 cc769851ab68b36acc2dbc2632ba405f
BLAKE2b-256 9c039ac32f65986773a85a3f2c7e58a7aefb22c8fcfa5912084ff9f793b8fcd3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ba3fb8e74f156f71c8a0f3eac0bfc72d86289efe9013560e5b7115caa662314d
MD5 944d8e4282b14daa304919280b9f76f5
BLAKE2b-256 2fe8e15ff547749c5a94c759064019e28df28120d5e9ed5d3cf2feaf032fbcad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 23e8ac418da04844b9986b2ff93ab58ab3874180a9481ee59ea27785d3e087d1
MD5 72919070ed4ec5e4381ee96a12199cc8
BLAKE2b-256 ee0176b8b0ea8419c6ad6798f74db8c2b4be10eb1edb894d51cc01e005583999

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1cfc68baaaebf0ea317af531c9939f3606a2a5752ac22c5f8682d5b9ea9e952b
MD5 a4bcf2a93d8ab8ecd01b75960c9605de
BLAKE2b-256 40fd9c69b6d3d7dd47a0fbb572b6915ba99c1f4a5809ed32720d73e067e00d7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 8ba82dccca684b563ea622a28604391ed1e5dfdf241738896f41dd7614a89eb2
MD5 5ffe9b9eff2fc57dbb97ecbb93985ae3
BLAKE2b-256 1bb56e24d665166190f0aa663298577a45c18f4df301706198eb118ad0635b83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f74f15fcb2a534383b339912a5e23959a3f058cee69f9304b799caaf9c8d661e
MD5 a5d9e2e2685a1ab7ebd490805f150bab
BLAKE2b-256 4a658d3f8af5b3b5d510d3b078a83f77976e5d8cb0697ae4afd32d723ba76aca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c0fb45250b57a0e602f7bae7fbdd0f91b8d267dc44d84dec6251ca68c7c04461
MD5 ceb025556bd3918777b84e34033f7085
BLAKE2b-256 3823ba120b2d5f3141d2f117ad2ea7424c24d7559498d4cef39887afc137253a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.2.9-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.9-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 24922b1f534e50e419c0a51deb139e0e7f3cdf380b0d8879277c1a7b48ad1e11
MD5 0d2791da2005e2bf557c53f843a6219b
BLAKE2b-256 c1c047d3e935cba1e4a4888280b99ef9b9a0f4ef3e2b21447aaf985c005b10f9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.2.9-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.9-cp39-none-win32.whl
Algorithm Hash digest
SHA256 0932cd62e2eb852ca43f6d55808814a4e05eaf4bfbdbef0b1c80cb923af318bb
MD5 b3bc211596d080405da418896a2ea1ba
BLAKE2b-256 e4adae39387a4f8c114afb95341277cf4723195a41abac4fbcb97a9a6d1acea2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d8ba09b74edce4d543253004de2fcbce786d1f0a8c6440d8fc594fc1a18f460d
MD5 e28c49154572f8e0c4f4d5cb8cbde957
BLAKE2b-256 a37e41d3ddcb9e65b9dcce8e9dfa8f6ebaeb378192569bb10e33172595d1b889

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 33bfd7b1df41372d81be0ed3a4d3236c95d2ff944ff05cdaccc209a500de583c
MD5 8c5774cd75f915fd8951572a6962aa94
BLAKE2b-256 817c2f0b15a9946f5a51c619eefb4746dcfec30c15af6f2a04d237e34720c45f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 22e7834f503a0aedd7865d27fbb0e446be530ad7e03b52c37f5412fac632e021
MD5 df157b56dd2fd0052a3525cb21122874
BLAKE2b-256 21792c1a28e7338e01dacdde1c546b4b0f05e24a46ef98c51177b35f28ff26ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 25770375493dd9929f7588242aedbf65f8b1e78bcc201475b9f5a55fbc167d16
MD5 8c603967b63e8d9607ec0b7816938062
BLAKE2b-256 691bb0c3b519dc465a7eaf5264e813b99dc07d1f0a078f0e3cd03013a0da12ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ba3716b5b35a99e1af0379850334a67b535956b1dd61bcb1aa27677284904c68
MD5 8408fb388ab1bb4eb1ac897a64197505
BLAKE2b-256 59a71d9a191cb9640a5880f7a2576a18fb0728afbfca90096b03fab964ee67f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 72ba3d2e6b93b4464e771ab057912f067e3db8fb85b1c5d596d7e25f7fe687c0
MD5 eff67ef4cf2762ddbc04edabba8a6e4d
BLAKE2b-256 df498cfe721e17a5591104bbef11ee7ef683322ba9b932380a168de2e9aa3d38

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.2.9-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.9-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 be5c351114cf09ba7cccc1625e78a7172214632243d62f8eb3634d6ac28579cc
MD5 2c1aed5defdaefdc511a2c4343ffaf1a
BLAKE2b-256 57f75c09605d0c6ecc378ef62840f75eb81a87897f82e5a2c71cd5f3b13a7f66

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.2.9-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.9-cp38-none-win32.whl
Algorithm Hash digest
SHA256 add7bc895538b79a81783e864aa93643da8889c885a41b13feb60d942713b325
MD5 ae200392056dcb487a37c0e74a1c1e38
BLAKE2b-256 a40fbb0ba062a340e68d0fbafe088c136276e594003bc573583fe9286ee7eb8e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8482525f778a7abecb0b603630e0ac6a7cca63ccc388a193bcc9dae87dcedefc
MD5 a6dfc955b57d1605fdf65251e347c012
BLAKE2b-256 ba88c8870df47b4a9a5309f1927b4d7b85b6ecd720baffe5e58532a298a25a55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d43dbdf67e72be7cd93a15e8a1a3c1d996fef3ef57ad933cfa69f44d54f7cb8c
MD5 80a44f7ffbe4b1d9cef4f783a2e89bd9
BLAKE2b-256 eab2c0c05d21e3e8196205a19657c9687437ab3900622d58ed97acd471b0a64b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 45020c69b2ff85943fd9d98c55aca643c45bf8e4736e45366cb0d58e27b0c290
MD5 665fe3b6f727229c27aaa0aa3c9ec0f8
BLAKE2b-256 bc67801ac936ead43972fe29c638ae04a3b414b4bfecf46fc1a32cffd1a20d5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 059114733c0911fff61fd8e42653d8f7c38628de2df63161a3beeb18a62e81ac
MD5 f5fe89d8333602226718a94d4be24a3a
BLAKE2b-256 64bbe9df07df6c97ebd3cfbeb5c1e100babb7b76217685a0d06a4f3ac7fb8f3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 35db772f8cae99c1f4e7b2345c8e84ff7552e629549895540356ea7d5a03c02d
MD5 1ca00f391902788279de30eae32b4c9d
BLAKE2b-256 e208709985271cfc3928e7dba01369782055bdff02e6dac1d4fc72956c5e76af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.2.9-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 50030907c3548f950100628ff2e31601e407077e7af0efbd6aa8bb2d24966631
MD5 ded598d120df455f88665b0dac18d1ab
BLAKE2b-256 417cb9896d8f65590be7870fef6648326054189e6da66a621e0ebf1abac508a9

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