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 = 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 as an async context manager

from typing import Any

from psqlpy import PSQLPool, IsolationLevel, QueryResult, Transaction, Cursor


db_pool = PSQLPool()


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

    connection = await db_pool.connection()
    transaction: Transaction
    cursor: Cursor
    async with connection.transaction() as transaction:
        async with transaction.cursor(
            querystring="SELECT * FROM users WHERE username = $1",
            parameters=["SomeUserName"],
            fetch_number=100,
        ) as cursor:
            async for fetched_result in cursor:
                print(fetched_result.result())

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

Uploaded Source

Built Distributions

psqlpy-0.3.1-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.3.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

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

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

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

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

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

Uploaded PyPy manylinux: glibc 2.17+ ARM64

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

Uploaded PyPy manylinux: glibc 2.12+ i686

psqlpy-0.3.1-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.3.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

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

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

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

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

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

Uploaded PyPy manylinux: glibc 2.17+ ARM64

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

Uploaded PyPy manylinux: glibc 2.12+ i686

psqlpy-0.3.1-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.3.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.8 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

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

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

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

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

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

Uploaded PyPy manylinux: glibc 2.17+ ARM64

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

Uploaded PyPy manylinux: glibc 2.12+ i686

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 Windows x86

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

Uploaded CPython 3.12 macOS 11.0+ ARM64

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

Uploaded CPython 3.12 macOS 10.12+ x86-64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 Windows x86

psqlpy-0.3.1-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.3.1-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.3.1-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.3.1-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.3.1-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.3.1-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.3.1-cp311-cp311-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

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

Uploaded CPython 3.11 macOS 10.12+ x86-64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 Windows x86

psqlpy-0.3.1-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.3.1-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.3.1-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.3.1-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.3.1-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.3.1-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.3.1-cp310-cp310-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

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

Uploaded CPython 3.10 macOS 10.12+ x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 Windows x86

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

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 Windows x86

psqlpy-0.3.1-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.3.1-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.3.1-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.3.1-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.3.1-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.3.1-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.3.1.tar.gz.

File metadata

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

File hashes

Hashes for psqlpy-0.3.1.tar.gz
Algorithm Hash digest
SHA256 5f6f1ed768664730702bae85743639ce56c552f7ab88fb80769990b3c3c67599
MD5 82698e1f70de3b4c50f3a7f48d32dc00
BLAKE2b-256 9508b8419b06065204730280a921e403af421188edfa11cd10338a2242e00ae3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8847f3e1dad541034c1a0863ba1d9b1d9586660d75efebca0f345d665b444a50
MD5 24aeb19a2dfc1780984de9f49206808f
BLAKE2b-256 d2933de7198ed4199eeba3343c01e015004a86e455a2120e6ccf629fdee2906c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 86ac167d9eab38229a3c7ea0d857a9e7eb14592e4e28700c5c51d3d3c1bcd6b4
MD5 de30dc48470d168fa620d9358cb35736
BLAKE2b-256 3b5e0e1283b31c5f27a89079527fd91b15974f3694d13032895e30123d402b31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 1b75cea15b5d7696781c182f4d368f8bbad53194b4815917b5801502c2cc5aaf
MD5 1377bf9ba2ac77cae037cc9fc2fba8c4
BLAKE2b-256 b54aea6a4ea38759bc3dbecc2f3d448d8d4753dedb517f51721c01b60132fc19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5d404a0cdc28fb0c26a6569224c964cca63d4f802f06b5dc0192a619d931ff4c
MD5 11a57cb3de083b51851179a6431b64c7
BLAKE2b-256 a9e523f6c8e2feb81d2d07bd031f63611728b03459b664026bdf6ab950d3d611

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6d6b15cf632c2ca84fd7677c94157b1ba44a7b44ada8fde316b5b171ea1bb018
MD5 4ec1043de2b601cb82ac267d3d957184
BLAKE2b-256 0007e600fbff5682ce7c702c5cbbc9d34fe6f9a7ff0c29d92d1a96d893941b23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 bd20a6b11960a12cde7fb9886658424a8c16afd73058ae0b805787c296b44c6a
MD5 4e3fd8ae0af2c0683f5c160f7cf10467
BLAKE2b-256 696b1d889cc2d35634bdc8f444b9d7950387ccb66d68afcaa40155ef883e674f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 edc1645c9a754d0824c6ea7c479126bc0f56a829a16970c168768c4f1e143091
MD5 7024e6feb95d16221cba989cb7c28077
BLAKE2b-256 cefcfd2f756a44bb2f915350260dfd7727c776ddba5f16df76d0c92d5e5bdc20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c2bbeb2088fa001777e847a76e559e2b061f804b553040ba883a59410401bc3e
MD5 ea61fb653540cc2d92e5bdf9e3206b5c
BLAKE2b-256 4f049a0938f9a1f19728ca0a6f5205d93c3ec51b1344e1af837ee47950306d7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c7d6e94135189e91f024fcc36bf30408c9442ba121dd62f17577208e83110329
MD5 1673c5e4b6cacdd111673ac0563140c8
BLAKE2b-256 d10dfef495e0224ebcfad9eaf554bb847b77b787dcad90895a62023d613efcd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 338b101cdd6036eca5abf603bcbafcda7278db83f1a128a6e920c5603bc8416a
MD5 7589942bab8d74d75f186624790881cf
BLAKE2b-256 35312f43970be7f6307f16e79795fed5629b045bc087f7b92e489284fd61254b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 280094454ae717be133d8744013c2a14bbc5515610299f22d63c95cf56e29256
MD5 dce01d8c8753496ed74aa6beca2c5778
BLAKE2b-256 6d519a79b4f8744b76860f656b587c101b2ec29ee2537700c23e675f9e10f4f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 399ae3c417c673bd110aa1ec1e65f1fd7cc482c77804e41051f2a200157eaace
MD5 5a88328e103ac0690599023fa4bc0e44
BLAKE2b-256 a8db20912a3f659bf8df91870981c5b6c4917ec870503762947b598e744908d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6b437e47797db86477713574d84c1ccfc0a252bc91b2ad462fb10118898907a9
MD5 70c1b67754803f588bbf065bf6812dfd
BLAKE2b-256 f926e6a27ef3949abddeb33343e1cda068326dd479e061ef36c31d0e3ad8dee0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 60beef2cb6da0fa2d2347859f487012ffec75aa73598119ef20db77ab5b8bee3
MD5 a8a63857b6d29e4b4dfedba5d5577e02
BLAKE2b-256 fa40191fbe9085c99409847fa2f08126971fc58a1c8917f6579d26e241ef34f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 20682be5ad1a394b702044a8e9cf94d2b25fbe764432fd55c52e7c76f8b0e1e7
MD5 e0d08cd0290a242102dac21f19bc9813
BLAKE2b-256 3a08bbb9bc3d18239a709fa78792b547c3f7b694fda53c37f063b8ae5f9e2fb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 82178cd4e009e7d3e7362a74fd1fcb21d17d06c94a163e8840f9338e103bfd8b
MD5 82658f303365407d5289042066d457f1
BLAKE2b-256 ddd9ee23fa8c2195675de6369e9e8827e72a413b8a6e092659ce8f2735969309

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ca6ffed7282a80ab76bdef72dc7d9f104db5f9093f4534e5c8d314dd6d17e79f
MD5 0ccd6fd5a6c60bbb9aef664a19e45d75
BLAKE2b-256 1d833dfb28c8fac06170e59abea636119b0b445f0b926d80db796a14a59ee3a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 5439a10828159f4450f69ba71cdda33594769c32c6ccf7dfdf82808cad669a39
MD5 6371edc5334ea314bdf8d4c81e826c96
BLAKE2b-256 fbf120050082b2829b081901806b2d1041d98fcf568d1a117684d1cc9d9fed2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 df5d9a786285efab57ebf283b701eb2ffd0c3e46377ee9b8c783b2c6b6a1a904
MD5 33cffae0839e3754b60e18c55819809e
BLAKE2b-256 30b43e434ba46a0ea7f0997d987f5761e4bcdc7e6c1f405075ee5f6fe5939373

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.3.1-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.3.1-cp312-none-win32.whl
Algorithm Hash digest
SHA256 686aba5d12580e293fcbf40b49dd8f15adf86bf45662fc5eb13ae166bc88fb01
MD5 4d40f23191672002f8284aa073d2999a
BLAKE2b-256 33b3e2ad7fd1946371e919af7bd94dbdbd312ed4bcba579bd25949947b8f6f6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8f784a5307560abb27eda6e66eee2d923f86ee09be42d846c89c517b907d37b9
MD5 908daad1472f752dc9fae0452344808a
BLAKE2b-256 525d1577d9aed51d35bf240186513fa78dc568799768a2b6420ebbdb4c8c5e0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ddc4ac5d9c39eadce59fb2cf5571cf26e63a3dc92f1c47a9e1e3a6fb3cee0bf3
MD5 4d11c5025cfc49756f40e00bbb03a2b7
BLAKE2b-256 f9d6dc5626334ddb5bbfc7be0bd39d3653560b9450be4323a2c57af9497f7fa5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 78cd9cb7a051abb21669a328ca5af9a696f84960139057ee462c0aeee71ee41b
MD5 5b09c318f7d7d64fb90b42cccc24fec7
BLAKE2b-256 58de622f13b18aa8eb348c40e83fedd13ced1c14b2be31fe40dd9fd9b911c787

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 71fbde64a5b835241466aedadec649ae5cd2e96bd0844b123bceb1f71a2f9905
MD5 6962a7f564fe2c417416f1a8984553c2
BLAKE2b-256 03d634d24dfac301e3fe5c3a97c73dc8edf6f589fbca23ae5ecb7223bf40d4d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cea4cd9dd82b3d929e4f63fe280b86ea2ed5dd0952251c4eaf713d2348482cea
MD5 665e639de3d21f57ecd9b28c4bd9e580
BLAKE2b-256 09b5704eae102e3ee8bd31c94b9411449f23202bd4f38f28996e546048a84b8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 252491383127567142991b05e3931f13349778e8b6e34cfd092538df88d5a5be
MD5 3fb850342506cf4c90fb75f1dc80e783
BLAKE2b-256 21df56c3cbd163062864a52e68217668a5902c989a5424bc738d4fb049c58759

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a6b99f7266b18d9436e5d3c73c6bbb420c986f83ac0788cb96638dcbd25a7984
MD5 3a912377ac1cac809f94718145a1d6ac
BLAKE2b-256 1f6746841965f7cf5ffea408fbfde93f21e5be58ae638c7d9a6896d4a7255f35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5ae3fee1fb23838aca0111ed75814235e3af0e7d7210ff03f5ce26d646540f2f
MD5 b6fc103e82fed6e6a689a9e4e59d041c
BLAKE2b-256 4391ad1deee72e25628d86cc6fa4c5aacc27c59188c65162cd28da461fb491d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 4b32ac5d6b74463e6c6ce8c316430b396ee446251509088cb7cfdb488e301177
MD5 c8295060cdcf69aaac25c3b0927c611f
BLAKE2b-256 2fc7b22ba0406345ed46476367567a1a28fd83207819bd92e9748e2e7fe538be

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.3.1-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.3.1-cp311-none-win32.whl
Algorithm Hash digest
SHA256 ac6415d6eac5c77fe515ec6266efe69e4f39cf20951c2c773ad4d7fa90b7edef
MD5 452b9276eb61c6eb368fb3eae4bf173a
BLAKE2b-256 5197d7b3fffcb5969a4592457efa8df753c9f342cc9fa66f5fff3704dc714ce4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4543e74dc062241956f183e22232e0f3606c1103e8bc38f82c1720fc5ac2bd00
MD5 2b85c05b4e34530f86e416f0ba5b6a82
BLAKE2b-256 5192b3d09a4d4d8a29b2b963b925ddb5797b1efba7534be422b7ae95ef2eef70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ae74d8ad70c7994edadbbfb879529a022d6e7dc8d3009eecbe71fa2bba5b4cac
MD5 994ddf21e536775ec012255bc5d3025c
BLAKE2b-256 32bba13cf207424ca7ffa2c312643316ac76f418b02669755af342f566785eac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 7e05dbf2512578e9356ea67516dfb0b88b46d34061d27806d9c99d261e36a4f9
MD5 1557775e029307f44af7bc50a00518f2
BLAKE2b-256 e04553499db28badc128e73c5ec73c0513a1eb2076f8cc677b970dbad7df445e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 02c498889b0ac85716ca540fe5a6f54311b4184af4a96244068e71fe872ce224
MD5 7099d4038b27a67610a28a9e75770bfb
BLAKE2b-256 cf024231ef5d63a3ef85afab7d0cd7b19a891600942adcdf4575ec5fb8289dda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3abf402afc6872d9bec966b80bba959706f7a85436d667641838806bf8d7efec
MD5 8e23796dc05701c80ea72883b74309ab
BLAKE2b-256 e7bafdc1d0d24516d4b43b10a164d4649178b306b438bf1b061c79408c3e4db9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 e3a262f32bd79f714632c873020ae243173f7addd39a159866e080b26d59dde6
MD5 c86e7a883b3161443e9dca12d1a11d44
BLAKE2b-256 e3c1f213c00299ac6cc8efbd0189e33458ef05526a72946c9910d72f6e4c5fc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cfa95a467d290fc29e132aaa6c317d37bcd6067109b1c71c4ae8b541d80cf5b7
MD5 2e37092cfd696e5efffbf5ba7291c4bf
BLAKE2b-256 19f915b4a4ecb9efe24c92de2bbfe90d0094bd70d295321ea79f7995272ecf19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3c3204a24c3853287b1ef3e0ad01174b038a711fe6e82e788906e4b5236073e7
MD5 533a77b5935252bb7310a25ea46769ee
BLAKE2b-256 14896865f013cbab34d51780373550aa5f1afb6fd9468763582a0e396dee0d52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 83d97be0f1a6e848e226aee8206284819d6d5a02600f9e69e115431301d39366
MD5 18fddb002a6bb4defae8a2914e53708f
BLAKE2b-256 e7ffc2e89162bd434353f7700c3b5fe25c8eb730e00caaae809c202009db3a56

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.3.1-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.3.1-cp310-none-win32.whl
Algorithm Hash digest
SHA256 d07e5fc2853c28922cf20e71ce6e6929c137e3e4a8cb8d017453af741b6b1b87
MD5 85363d534af4b0678350ce20d3608c68
BLAKE2b-256 d20062c35eb7e4c777673fab17e73aa64b8535638ca1a40e3dd79d4d2727cede

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 024a789c0cebd4644f0dce34c9ccb99f161a50b4383fdb38b6d2c295afe0dd91
MD5 c9e3ff942e65e6997adbf5feae3f6a11
BLAKE2b-256 20cb024437c3354a4a2a5f87e3ce366c9055c3af70c7fc77b8d828da61135017

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 20f86aeb1f427b1acbaf100108c9a85f129b6e34cb7d602a3dc0333a4e79aa36
MD5 77792d78d424d3c5b3520f066e62ba0f
BLAKE2b-256 eaead683cf1e890b01cf4022bc8d0b04f1668e7620b1f489238929ff95cd93cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 e8793336ed3611f9aef8670e3523eb807a8b60e72e799f087ac397ee33e40362
MD5 de0085daaab649303a5d55045f04ff72
BLAKE2b-256 4794099030f9730a94577e62b9b69346c14da8bc9d66d0601f2dac00ca92a565

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3ec20f3f282abdbf3917b6d4eb1ebf1fa41e32b87b43ec74580a0dd863c7633d
MD5 a8eb635fac1a86212bba50dc7140019a
BLAKE2b-256 a6694937fe68940273fd104b1c3ef04c3f5e52e31c932b3a4fab0f5871d2e08f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cdbe1e723bd561fe0b50721b6deadb4f7b3b4f768d0b2f7347e75cd4253ddcec
MD5 5b42457cf5a5696617075bc6955496df
BLAKE2b-256 b77f0b38daab05e9a509a1453bf5c1b945ee861f665b6020cb6d8ff3452ffe66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 babf3db964d30736d3bece2fc2f620ef7b7a7c517a5c284c55acbc8d5fddd8ec
MD5 f6ff1e688396d198f7ffd6c143d52284
BLAKE2b-256 ee987983ef490b1fa3a59c1d82e11ddd803e77b338992469621c309d498af430

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e1830bf5d187ecd6216d0d218fb97ed35fb668da07f8d60996acafe07b407ccf
MD5 9995cd6549fe4b0823257c01c9361955
BLAKE2b-256 6b72245dbbf4c4c6e13b3bcddef79012bfd66ce044d5fdad8825d4b26aed9751

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ae28b36b9f7bea1439200ee6aa2bb0a59e66746ebf1d523f9ae2ab43cce2435b
MD5 3b5636ba6e09fa065ef27a4c93ef4033
BLAKE2b-256 3ba3aa8f4585aa2f6e425037d20f2555028756db085abfd015cc6c662788c5ea

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.3.1-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.3.1-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 81d4659d3111f142e8e34b5fdec0584e2b09347a94ffc40087f89b10a5c75701
MD5 f77a8250914c9e3ddcb452e17bc88d56
BLAKE2b-256 55f849fbee0f9809a47987f0299dafecdbd7a86607061ca0564a6f62f7f4beb1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.3.1-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.3.1-cp39-none-win32.whl
Algorithm Hash digest
SHA256 6cf0af37faca46b0cf2ff3fcd179dfa7dd1dea7ca78fcc2e803e53e362c5f67d
MD5 9a608995e25fe525cdc5739977250977
BLAKE2b-256 9ec314e0eae2ecb9db72e49428726d375b69ebdab8cb66d5bdce3414028f6239

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f9ea07d814e097b94f9a54f5416620c29b9d48f0983e0a18803eef8974ae7ba7
MD5 806c7158fdf8dbe90828010fc610228b
BLAKE2b-256 e105a6b14623752ad2c7d47fbbbbff9d21f75e7bcfffc6cfb6e67f7b80679213

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ce6cf8e679222bb623131d9b679e918181da0892d11458b89914291587be7cfd
MD5 0148976dededd1758996faea433d5441
BLAKE2b-256 e187a382f90836376c93d4414e31e33dbe7a11290789f4fc1e31c3c507a4c50e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 2898c2ca001f285948994e7aad426bbcd89b8a0844c316c372a0bf6492fc1ec1
MD5 102b5c95d5074d72d7138345bd2eeb16
BLAKE2b-256 4d732c1b81411a2bfeee948d1e3c8c5392ba975e59cabc80b0552ec2b6281931

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6e87e21e668a3a950a65f1a866b6879a1e9c9b952ae9de0f20ad1b3f40c4edc0
MD5 f7c516c47995c1966c974e969d80275a
BLAKE2b-256 7d236f6a9741c83ce0e88a7c5c6911565bf51f80d34902d99ae8526de4caabef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0415e138ab850eb47c90ad24de4adabcb96721d70095c1fdd055592b75b06512
MD5 c47239f516f0990758c99e8737d3a9ca
BLAKE2b-256 ace0a0c819ad87f1a497b38b7ad4c8633dae428c14966bd1d2e7679ee55eb301

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 adff0a05bedb41da80b30d3ab9cb5be8ade97ccd65dea2204fe6e00c76380a33
MD5 392fca6baaae7a71fff7398e88e46a4c
BLAKE2b-256 76e0b16bcec7940b6374b5698a73b3bd065603973ad0838208d2093f25e43259

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.3.1-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.3.1-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 2651339d7c2217a70605c6996631ec4896c41aefffe1b311221212658d2177c9
MD5 a78d71683b104f70c79fc059135c5ada
BLAKE2b-256 84f9c28595c201d8a9b4322561828135acb93c925ec82daa4e11e0b8c85fbacd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: psqlpy-0.3.1-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.3.1-cp38-none-win32.whl
Algorithm Hash digest
SHA256 a0885c8c7bf06d17f90e8db2c8cfabdcb51d4a091df6e74403bb4cfd24307cc3
MD5 eb961b6f333154eebe6de44d84db3d27
BLAKE2b-256 92f7a4177b042d17f9a3cb3e8c89fcf51ea5b3ce14150b497a711b79e700dbff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd49531f9f53998de73583ce4b5cffe4759c763fb66bfab8cbca3d8087e6d3c2
MD5 d672b4d656b5bb5994fd58484fc219e8
BLAKE2b-256 061887207991d7b163312f405261f321dd29c097b0d3bf5265b04a40fef92afa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 77e1991ac3b3f6cc9f55152f946089583cc62a47895ed658f42ee5411ab63351
MD5 2bea592cfbca00bdcc681758e5a2f48c
BLAKE2b-256 762e6bf095597139a116a970cffefc145506b849e250c762ec585872362268bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 9e8a3c0d0173135d6150ee5a2c74ddf7b5779827994657e96aca7ee37ca4e424
MD5 01712142ec5a0fbcdab3e2f9e6375e76
BLAKE2b-256 343ab79c3134e7c3fb3854741a8792ac0b0994e1e6ce8325acc6ed9d66e84be8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 d38d0cced79a997dee2b1c46823398f565170c332d198ca612a9e7beee109ef7
MD5 f75bf7f90d2019af3668d547c2be3278
BLAKE2b-256 6f5944a441f7feea1693455c6890863d66c35f2acc47588bff9baea9bcf6781e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2d8c0f5c7231e3ededab11855de83df1fc952260dbbf335fa356b0287c2e7612
MD5 c18ca3fc542c6e0cf246e1ef5dec9ba5
BLAKE2b-256 b06686a630f9fd6898d64885e92a19b89e6a7ba2005df510b96ec304f4168874

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for psqlpy-0.3.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 e2a6d9ccf6223152404644e1ab3f8cd8f79fddb0703b540e64a58e834bdc2779
MD5 1631ec5f28fe6776d9668d982f03dd18
BLAKE2b-256 2e68aabf9110ca0c137726faa56e05752f4901a8ce9c6eecc2d5fab5589ef735

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