sqlcycli


Namesqlcycli JSON
Version 1.1.1 PyPI version JSON
download
home_pagehttps://github.com/AresJef/SQLCyCli
SummaryFast MySQL driver build in Cython (Sync and Async).
upload_time2024-09-18 06:33:39
maintainerNone
docs_urlNone
authorJiefu Chen
requires_python>=3.10
licenseMIT license
keywords mysql mariadb pymysql aiomysql cython asyncio
VCS
bugtrack_url
requirements numpy orjson pandas mysqlclient
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## Fast MySQL driver build in Cython (Sync and Async).

Created to be used in a project, this package is published to github for ease of management and installation across different modules.

### Installation

Install from `PyPi`

```bash
pip install sqlcycli
```

Install from `github`

```bash
pip install git+https://github.com/AresJef/SQLCyCli.git
```

For Linux systems, if you encounter the following error when installing the SQLCyCli dependency [mysqlclient](https://github.com/PyMySQL/mysqlclient):

```
Exception: Can not find valid pkg-config name.
Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually
```

Try the following to fix dependency issue (source: [Stack Overflow](https://stackoverflow.com/questions/76585758/mysqlclient-cannot-install-via-pip-cannot-find-pkg-config-name-in-ubuntu)):

```bash
sudo apt-get install pkg-config python3-dev default-libmysqlclient-dev build-essential
```

### Requirements

- Python 3.10 or higher.
- MySQL 5.5 or higher.

### Features

- Written in [Cython](https://cython.org/) for optimal performance (especially for SELECT/INSERT query).
- All classes and methods are well documented and type annotated.
- Supports both `Sync` and `Async` connection to the server.
- API Compatiable with [PyMySQL](https://github.com/PyMySQL/PyMySQL) and [aiomysql](https://github.com/aio-libs/aiomysql).
- Support conversion (escape) for most of the native python types, and objects from libaray [numpy](https://github.com/numpy/numpy) and [pandas](https://github.com/pandas-dev/pandas). Does `NOT` support custom conversion (escape).

### Benchmark

The following result comes from [benchmark](./src/benchmark.py):

- Device: MacbookPro M1Pro(2E8P) 32GB
- Python: 3.12.4
- MySQL: 8.3.0
- mysqlclient: 2.2.4
- PyMySQL: 1.1.1
- aiomysql: 0.2.0
- asyncmy: 0.2.9

```
# Unit: second | Lower is better
name        type    rows    insert-per-row  insert-bulk select-per-row  select-all
mysqlclient sync    50000   1.729575        0.435661    1.719481        0.117943
SQLCyCli    sync    50000   2.165910        0.275736    2.215093        0.056679
PyMySQL     sync    50000   2.553401        0.404618    4.212548        0.325706
SQLCyCli    async   50000   3.347850        0.282364    4.153874        0.135656
aiomysql    async   50000   3.478428        0.394711    5.101733        0.321200
asyncmy     async   50000   3.665675        0.397671    5.483239        0.313418
```

```
# Unit: second | Lower is better
name        type    rows    update-per-row  update-all  delete-per-row  delete-all
mysqlclient sync    50000   1.735787        0.345561    1.531275        0.105109
SQLCyCli    sync    50000   2.241458        0.343359    2.078324        0.104441
PyMySQL     sync    50000   2.516349        0.344614    2.264735        0.104326
SQLCyCli    async   50000   3.465996        0.343864    3.269337        0.103967
aiomysql    async   50000   3.534125        0.344573    3.345815        0.104281
asyncmy     async   50000   3.695764        0.352104    3.460674        0.104523
```

### Usage

#### Use `connect()` to create one connection (`Sync` or `Async`) to the server.

```python
import asyncio
import sqlcycli

HOST = "localhost"
PORT = 3306
USER = "root"
PSWD = "password"

# Synchronous Connection
def test_sync_connection() -> None:
    with sqlcycli.connect(HOST, PORT, USER, PSWD) as conn:
        with conn.cursor() as cur:
            cur.execute("SELECT 1")
            res = cur.fetchone()
            assert res == (1,)
    # Connection closed
    assert conn.closed()

# Asynchronous Connection
async def test_async_connection() -> None:
    async with sqlcycli.connect(HOST, PORT, USER, PSWD) as conn:
        async with conn.cursor() as cur:
            await cur.execute("SELECT 1")
            res = await cur.fetchone()
            assert res == (1,)
    # Connection closed
    assert conn.closed()

if __name__ == "__main__":
    test_sync_connection()
    asyncio.run(test_async_connection())
```

#### Use `create_pool()` to create a Pool for managing and maintaining `Async` connections to the server.

```python
import asyncio
import sqlcycli

HOST = "localhost"
PORT = 3306
USER = "root"
PSWD = "password"

# Pool (Context Manager: Connected)
async def test_pool_context_connected() -> None:
    async with sqlcycli.create_pool(HOST, PORT, USER, PSWD, min_size=1) as pool:
        # Pool is connected: 1 free connection (min_size=1)
        assert not pool.closed() and pool.free == 1
        async with pool.acquire() as conn:
            async with conn.cursor() as cur:
                await cur.execute("SELECT 1")
                res = await cur.fetchone()
                assert res == (1,)
    # Pool closed
    assert pool.closed() and pool.total == 0

# Pool (Context Manager: Disconnected)
async def test_pool_context_disconnected() -> None:
    with sqlcycli.create_pool(HOST, PORT, USER, PSWD, min_size=1) as pool:
        # Pool is not connected: 0 free connection (min_size=1)
        assert pool.closed() and pool.free == 0
        # Connect automatically
        async with pool.acquire() as conn:
            async with conn.cursor() as cur:
                await cur.execute("SELECT 1")
                res = await cur.fetchone()
                assert res == (1,)
        # 1 free connection
        assert pool.free == 1
    # Pool closed
    assert pool.closed() and pool.total == 0

# Pool (Create Directly: Connected)
async def test_pool_direct_connected() -> None:
    pool = await sqlcycli.create_pool(HOST, PORT, USER, PSWD, min_size=1)
    # Pool is connected: 1 free connection (min_size=1)
    assert not pool.closed() and pool.free == 1
    async with pool.acquire() as conn:
        async with conn.cursor() as cur:
            await cur.execute("SELECT 1")
            res = await cur.fetchone()
            assert res == (1,)
    # Close pool manually
    await pool.close()
    assert pool.closed() and pool.total == 0

if __name__ == "__main__":
    asyncio.run(test_pool_context_connected())
    asyncio.run(test_pool_context_disconnected())
    asyncio.run(test_pool_direct_connected())
```

### Acknowledgements

SQLCyCli is build on top of the following open-source repositories:

- [aiomysql](https://github.com/aio-libs/aiomysql)
- [PyMySQL](https://github.com/PyMySQL/PyMySQL)

SQLCyCli is based on the following open-source repositories:

- [numpy](https://github.com/numpy/numpy)
- [orjson](https://github.com/ijl/orjson)
- [pandas](https://github.com/pandas-dev/pandas)
- [mysqlclient](https://github.com/PyMySQL/mysqlclient)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/AresJef/SQLCyCli",
    "name": "sqlcycli",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "mysql, mariadb, pymysql, aiomysql, cython, asyncio",
    "author": "Jiefu Chen",
    "author_email": "keppa1991@163.com",
    "download_url": "https://files.pythonhosted.org/packages/9b/25/0e39cb309df2862e77cb955fbbef18c6d45d431f232f3299b3de8f8f4828/sqlcycli-1.1.1.tar.gz",
    "platform": null,
    "description": "## Fast MySQL driver build in Cython (Sync and Async).\n\nCreated to be used in a project, this package is published to github for ease of management and installation across different modules.\n\n### Installation\n\nInstall from `PyPi`\n\n```bash\npip install sqlcycli\n```\n\nInstall from `github`\n\n```bash\npip install git+https://github.com/AresJef/SQLCyCli.git\n```\n\nFor Linux systems, if you encounter the following error when installing the SQLCyCli dependency [mysqlclient](https://github.com/PyMySQL/mysqlclient):\n\n```\nException: Can not find valid pkg-config name.\nSpecify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually\n```\n\nTry the following to fix dependency issue (source: [Stack Overflow](https://stackoverflow.com/questions/76585758/mysqlclient-cannot-install-via-pip-cannot-find-pkg-config-name-in-ubuntu)):\n\n```bash\nsudo apt-get install pkg-config python3-dev default-libmysqlclient-dev build-essential\n```\n\n### Requirements\n\n- Python 3.10 or higher.\n- MySQL 5.5 or higher.\n\n### Features\n\n- Written in [Cython](https://cython.org/) for optimal performance (especially for SELECT/INSERT query).\n- All classes and methods are well documented and type annotated.\n- Supports both `Sync` and `Async` connection to the server.\n- API Compatiable with [PyMySQL](https://github.com/PyMySQL/PyMySQL) and [aiomysql](https://github.com/aio-libs/aiomysql).\n- Support conversion (escape) for most of the native python types, and objects from libaray [numpy](https://github.com/numpy/numpy) and [pandas](https://github.com/pandas-dev/pandas). Does `NOT` support custom conversion (escape).\n\n### Benchmark\n\nThe following result comes from [benchmark](./src/benchmark.py):\n\n- Device: MacbookPro M1Pro(2E8P) 32GB\n- Python: 3.12.4\n- MySQL: 8.3.0\n- mysqlclient: 2.2.4\n- PyMySQL: 1.1.1\n- aiomysql: 0.2.0\n- asyncmy: 0.2.9\n\n```\n# Unit: second | Lower is better\nname        type    rows    insert-per-row  insert-bulk select-per-row  select-all\nmysqlclient sync    50000   1.729575        0.435661    1.719481        0.117943\nSQLCyCli    sync    50000   2.165910        0.275736    2.215093        0.056679\nPyMySQL     sync    50000   2.553401        0.404618    4.212548        0.325706\nSQLCyCli    async   50000   3.347850        0.282364    4.153874        0.135656\naiomysql    async   50000   3.478428        0.394711    5.101733        0.321200\nasyncmy     async   50000   3.665675        0.397671    5.483239        0.313418\n```\n\n```\n# Unit: second | Lower is better\nname        type    rows    update-per-row  update-all  delete-per-row  delete-all\nmysqlclient sync    50000   1.735787        0.345561    1.531275        0.105109\nSQLCyCli    sync    50000   2.241458        0.343359    2.078324        0.104441\nPyMySQL     sync    50000   2.516349        0.344614    2.264735        0.104326\nSQLCyCli    async   50000   3.465996        0.343864    3.269337        0.103967\naiomysql    async   50000   3.534125        0.344573    3.345815        0.104281\nasyncmy     async   50000   3.695764        0.352104    3.460674        0.104523\n```\n\n### Usage\n\n#### Use `connect()` to create one connection (`Sync` or `Async`) to the server.\n\n```python\nimport asyncio\nimport sqlcycli\n\nHOST = \"localhost\"\nPORT = 3306\nUSER = \"root\"\nPSWD = \"password\"\n\n# Synchronous Connection\ndef test_sync_connection() -> None:\n    with sqlcycli.connect(HOST, PORT, USER, PSWD) as conn:\n        with conn.cursor() as cur:\n            cur.execute(\"SELECT 1\")\n            res = cur.fetchone()\n            assert res == (1,)\n    # Connection closed\n    assert conn.closed()\n\n# Asynchronous Connection\nasync def test_async_connection() -> None:\n    async with sqlcycli.connect(HOST, PORT, USER, PSWD) as conn:\n        async with conn.cursor() as cur:\n            await cur.execute(\"SELECT 1\")\n            res = await cur.fetchone()\n            assert res == (1,)\n    # Connection closed\n    assert conn.closed()\n\nif __name__ == \"__main__\":\n    test_sync_connection()\n    asyncio.run(test_async_connection())\n```\n\n#### Use `create_pool()` to create a Pool for managing and maintaining `Async` connections to the server.\n\n```python\nimport asyncio\nimport sqlcycli\n\nHOST = \"localhost\"\nPORT = 3306\nUSER = \"root\"\nPSWD = \"password\"\n\n# Pool (Context Manager: Connected)\nasync def test_pool_context_connected() -> None:\n    async with sqlcycli.create_pool(HOST, PORT, USER, PSWD, min_size=1) as pool:\n        # Pool is connected: 1 free connection (min_size=1)\n        assert not pool.closed() and pool.free == 1\n        async with pool.acquire() as conn:\n            async with conn.cursor() as cur:\n                await cur.execute(\"SELECT 1\")\n                res = await cur.fetchone()\n                assert res == (1,)\n    # Pool closed\n    assert pool.closed() and pool.total == 0\n\n# Pool (Context Manager: Disconnected)\nasync def test_pool_context_disconnected() -> None:\n    with sqlcycli.create_pool(HOST, PORT, USER, PSWD, min_size=1) as pool:\n        # Pool is not connected: 0 free connection (min_size=1)\n        assert pool.closed() and pool.free == 0\n        # Connect automatically\n        async with pool.acquire() as conn:\n            async with conn.cursor() as cur:\n                await cur.execute(\"SELECT 1\")\n                res = await cur.fetchone()\n                assert res == (1,)\n        # 1 free connection\n        assert pool.free == 1\n    # Pool closed\n    assert pool.closed() and pool.total == 0\n\n# Pool (Create Directly: Connected)\nasync def test_pool_direct_connected() -> None:\n    pool = await sqlcycli.create_pool(HOST, PORT, USER, PSWD, min_size=1)\n    # Pool is connected: 1 free connection (min_size=1)\n    assert not pool.closed() and pool.free == 1\n    async with pool.acquire() as conn:\n        async with conn.cursor() as cur:\n            await cur.execute(\"SELECT 1\")\n            res = await cur.fetchone()\n            assert res == (1,)\n    # Close pool manually\n    await pool.close()\n    assert pool.closed() and pool.total == 0\n\nif __name__ == \"__main__\":\n    asyncio.run(test_pool_context_connected())\n    asyncio.run(test_pool_context_disconnected())\n    asyncio.run(test_pool_direct_connected())\n```\n\n### Acknowledgements\n\nSQLCyCli is build on top of the following open-source repositories:\n\n- [aiomysql](https://github.com/aio-libs/aiomysql)\n- [PyMySQL](https://github.com/PyMySQL/PyMySQL)\n\nSQLCyCli is based on the following open-source repositories:\n\n- [numpy](https://github.com/numpy/numpy)\n- [orjson](https://github.com/ijl/orjson)\n- [pandas](https://github.com/pandas-dev/pandas)\n- [mysqlclient](https://github.com/PyMySQL/mysqlclient)\n",
    "bugtrack_url": null,
    "license": "MIT license",
    "summary": "Fast MySQL driver build in Cython (Sync and Async).",
    "version": "1.1.1",
    "project_urls": {
        "Homepage": "https://github.com/AresJef/SQLCyCli"
    },
    "split_keywords": [
        "mysql",
        " mariadb",
        " pymysql",
        " aiomysql",
        " cython",
        " asyncio"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2631ab4bce234d4595b85318faaa51a7eae72c9bdcac9a7b4056f6ba1bb5821f",
                "md5": "9eb32973af8e367ebdd2931ce876d970",
                "sha256": "e07fea8974b507a61a223ead112d5ff73a3538b95e6d3d0a031b3ebc98bc7007"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp310-cp310-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "9eb32973af8e367ebdd2931ce876d970",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 5439290,
            "upload_time": "2024-09-18T06:33:01",
            "upload_time_iso_8601": "2024-09-18T06:33:01.893746Z",
            "url": "https://files.pythonhosted.org/packages/26/31/ab4bce234d4595b85318faaa51a7eae72c9bdcac9a7b4056f6ba1bb5821f/sqlcycli-1.1.1-cp310-cp310-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "556a5784fbe1c7867bc7933644aa1664d45bf945b7fbe59cb2880ded4ee9d2ad",
                "md5": "2fec4ca8e78d6905e1a9016687ae77cb",
                "sha256": "87bbac926edf4dd697d837151f8cc513a33d828df25b175bc3d9a83a28c8fa85"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2fec4ca8e78d6905e1a9016687ae77cb",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 4059689,
            "upload_time": "2024-09-18T06:33:06",
            "upload_time_iso_8601": "2024-09-18T06:33:06.889184Z",
            "url": "https://files.pythonhosted.org/packages/55/6a/5784fbe1c7867bc7933644aa1664d45bf945b7fbe59cb2880ded4ee9d2ad/sqlcycli-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3a4ade02ba8670801b1d471da8308aff75592377a1b0e7bccb7b3e91eb82ee23",
                "md5": "d7de9b0026c65e70d99ba10f4c8fff20",
                "sha256": "930a53521f71e2ac3b6cc4a8d3962a402e2aa81c2d739204e3fac7463b67adae"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d7de9b0026c65e70d99ba10f4c8fff20",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 3932637,
            "upload_time": "2024-09-18T06:33:08",
            "upload_time_iso_8601": "2024-09-18T06:33:08.606055Z",
            "url": "https://files.pythonhosted.org/packages/3a/4a/de02ba8670801b1d471da8308aff75592377a1b0e7bccb7b3e91eb82ee23/sqlcycli-1.1.1-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2de1d8944d51b60ed2e71ea82b66347c24d467a7a3978e10019073e5185dc6e1",
                "md5": "8a5851bcf332de272e55e14b05a2049d",
                "sha256": "33dbec31fce47d0b66b3007a2eec0270bff047632fb50e243364708e263d1e62"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8a5851bcf332de272e55e14b05a2049d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 10973933,
            "upload_time": "2024-09-18T06:33:10",
            "upload_time_iso_8601": "2024-09-18T06:33:10.523375Z",
            "url": "https://files.pythonhosted.org/packages/2d/e1/d8944d51b60ed2e71ea82b66347c24d467a7a3978e10019073e5185dc6e1/sqlcycli-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ac85cb91c2a62cbacf6816e8134979183a7a650781780295fe3b12d448ffed0e",
                "md5": "db3c74ff703cde54c059a3970c061ef2",
                "sha256": "6c16069714568ca37f5a59938a55af70135cd18e04f17b9ed1e451a317777529"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "db3c74ff703cde54c059a3970c061ef2",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 11045610,
            "upload_time": "2024-09-18T06:33:12",
            "upload_time_iso_8601": "2024-09-18T06:33:12.827165Z",
            "url": "https://files.pythonhosted.org/packages/ac/85/cb91c2a62cbacf6816e8134979183a7a650781780295fe3b12d448ffed0e/sqlcycli-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "75f053ec44f5db6396f06b9ad78d7f9be2fc8979dda17e0efacf2a7c1bbaa40b",
                "md5": "aaee1ef0a44334a9e24c1fb3f882b8fe",
                "sha256": "a8323f568425ca9851507c86acdd9f93a94252336be446ef124ab69c8dd45042"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "aaee1ef0a44334a9e24c1fb3f882b8fe",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 3857820,
            "upload_time": "2024-09-18T06:33:14",
            "upload_time_iso_8601": "2024-09-18T06:33:14.698760Z",
            "url": "https://files.pythonhosted.org/packages/75/f0/53ec44f5db6396f06b9ad78d7f9be2fc8979dda17e0efacf2a7c1bbaa40b/sqlcycli-1.1.1-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "437c392c5be5120acb5770a28664a2d1a7866e69e5017af9a6daed6638e1c8d4",
                "md5": "799dfe360e76a86a6d5a112e9faa201f",
                "sha256": "b26ae11733612950a436509dd2cd88d1ee6272fc0709907ce9b2ce5e57228f9f"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp311-cp311-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "799dfe360e76a86a6d5a112e9faa201f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 5448526,
            "upload_time": "2024-09-18T06:33:16",
            "upload_time_iso_8601": "2024-09-18T06:33:16.193758Z",
            "url": "https://files.pythonhosted.org/packages/43/7c/392c5be5120acb5770a28664a2d1a7866e69e5017af9a6daed6638e1c8d4/sqlcycli-1.1.1-cp311-cp311-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "74b22cd97b2adc313f133a052fbf337237bb02c91436fb53f7821f3a4d5a6a12",
                "md5": "4addc9ecf260bd9d1aab875cffc1e913",
                "sha256": "030f0110d707ac26b8064d31079925fc2915c23eebcfee3cea32ea7036cc5a31"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4addc9ecf260bd9d1aab875cffc1e913",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 4065612,
            "upload_time": "2024-09-18T06:33:17",
            "upload_time_iso_8601": "2024-09-18T06:33:17.810567Z",
            "url": "https://files.pythonhosted.org/packages/74/b2/2cd97b2adc313f133a052fbf337237bb02c91436fb53f7821f3a4d5a6a12/sqlcycli-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "94c687858127d78934f963fcf949ff7fc867615f4887a5154190e063cdc25a4e",
                "md5": "8bc8f0f11103ffb942639928d7f3025d",
                "sha256": "c80b968d8422979efa3bd97c361df4edf7b4442f39375bf3dfc39939344cb147"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "8bc8f0f11103ffb942639928d7f3025d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 3935211,
            "upload_time": "2024-09-18T06:33:19",
            "upload_time_iso_8601": "2024-09-18T06:33:19.652269Z",
            "url": "https://files.pythonhosted.org/packages/94/c6/87858127d78934f963fcf949ff7fc867615f4887a5154190e063cdc25a4e/sqlcycli-1.1.1-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "460060d07b25ba50f6c40671ecc5678724b7e0ecfe68b66df68967e78006185b",
                "md5": "f104ddc4bf850b6faec701413ef4d6b5",
                "sha256": "f9f53e0f860c582e49b93a79d5018f0277bbff43bdb184b304b3376d352ae313"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f104ddc4bf850b6faec701413ef4d6b5",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 11698446,
            "upload_time": "2024-09-18T06:33:21",
            "upload_time_iso_8601": "2024-09-18T06:33:21.549980Z",
            "url": "https://files.pythonhosted.org/packages/46/00/60d07b25ba50f6c40671ecc5678724b7e0ecfe68b66df68967e78006185b/sqlcycli-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "605963df3fe0e45a2ce9bf22399a4100bb0fada12b33d697580e5f2fb314b2d0",
                "md5": "e85eb3d12186d954e6230c7f0a2c9f8b",
                "sha256": "ff2bee21f648d66b9c8861b850190140f43d95a2b32e3d10ad0d90c5c4878532"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e85eb3d12186d954e6230c7f0a2c9f8b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 11817868,
            "upload_time": "2024-09-18T06:33:24",
            "upload_time_iso_8601": "2024-09-18T06:33:24.343994Z",
            "url": "https://files.pythonhosted.org/packages/60/59/63df3fe0e45a2ce9bf22399a4100bb0fada12b33d697580e5f2fb314b2d0/sqlcycli-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2e4a291bae67ab2f9896d3b5992a73f36a283c3aa468d19ac3877e536f2aaf55",
                "md5": "13995dabd0b1dfb9dbadadbe3985293b",
                "sha256": "3ca87801acdeb4fa62767c4bd82a519505c35b22670bac73c9067e414789d827"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "13995dabd0b1dfb9dbadadbe3985293b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 3864108,
            "upload_time": "2024-09-18T06:33:26",
            "upload_time_iso_8601": "2024-09-18T06:33:26.236659Z",
            "url": "https://files.pythonhosted.org/packages/2e/4a/291bae67ab2f9896d3b5992a73f36a283c3aa468d19ac3877e536f2aaf55/sqlcycli-1.1.1-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7f7528e424055d86f04cd71356e83f3b034844541746b7288452466c9dbdabfc",
                "md5": "2f36f4a90c68e9ffa084de4935417f62",
                "sha256": "3b453a848fc65dd545f591a4a0d6b8c8a647f5d548f04c432d6dc71971dd4d67"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp312-cp312-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "2f36f4a90c68e9ffa084de4935417f62",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 5435216,
            "upload_time": "2024-09-18T06:33:27",
            "upload_time_iso_8601": "2024-09-18T06:33:27.863497Z",
            "url": "https://files.pythonhosted.org/packages/7f/75/28e424055d86f04cd71356e83f3b034844541746b7288452466c9dbdabfc/sqlcycli-1.1.1-cp312-cp312-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d751351a9099d2074ec568385032bad1257f4dc1ef6c78d817c001fdf8ea3a53",
                "md5": "c88c3bd2963c843e46fc7200f4812693",
                "sha256": "719dba0341848e7543833c49bab7d08664e251876568955d5c6febab7e84adfd"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c88c3bd2963c843e46fc7200f4812693",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 4048538,
            "upload_time": "2024-09-18T06:33:29",
            "upload_time_iso_8601": "2024-09-18T06:33:29.213499Z",
            "url": "https://files.pythonhosted.org/packages/d7/51/351a9099d2074ec568385032bad1257f4dc1ef6c78d817c001fdf8ea3a53/sqlcycli-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7a98101f0a1fd7404c54e4cbef9b2bc7851c636f014ea9c0a499289dd0487944",
                "md5": "bfdd8764ceaa77126b7ccb19a6fdce65",
                "sha256": "b9503ef2aae73faa705e82bde0ed106b52fb49b33318183865bf2c554ecfec79"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "bfdd8764ceaa77126b7ccb19a6fdce65",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 3939804,
            "upload_time": "2024-09-18T06:33:31",
            "upload_time_iso_8601": "2024-09-18T06:33:31.340654Z",
            "url": "https://files.pythonhosted.org/packages/7a/98/101f0a1fd7404c54e4cbef9b2bc7851c636f014ea9c0a499289dd0487944/sqlcycli-1.1.1-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "07db2a49ad4de65da7d26332e7b582ad28eebd5ed16f2c61e0dc320917c9e44b",
                "md5": "a75d345dab7f0edfc6e21b9c1bba0d9c",
                "sha256": "f1dbb7a6f15aaf41c93a7c50ee1a8020c837c991ec141305ed9d099d40af797b"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a75d345dab7f0edfc6e21b9c1bba0d9c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 11685324,
            "upload_time": "2024-09-18T06:33:33",
            "upload_time_iso_8601": "2024-09-18T06:33:33.497447Z",
            "url": "https://files.pythonhosted.org/packages/07/db/2a49ad4de65da7d26332e7b582ad28eebd5ed16f2c61e0dc320917c9e44b/sqlcycli-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "de6ee97fd74bb28b510284a24c8bbbfa14696b520b8e1b565efb2617b7a42686",
                "md5": "02576d883a0687cbc3cfe1939b768463",
                "sha256": "68c5205834f66d9ac7b6ed0fa1c1e439f916150e5735d3cd7279dce871fe0b92"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "02576d883a0687cbc3cfe1939b768463",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 11672234,
            "upload_time": "2024-09-18T06:33:35",
            "upload_time_iso_8601": "2024-09-18T06:33:35.512174Z",
            "url": "https://files.pythonhosted.org/packages/de/6e/e97fd74bb28b510284a24c8bbbfa14696b520b8e1b565efb2617b7a42686/sqlcycli-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "87455a029e908166a8727d5c32f361fea4bbbfd2e0bf7aad905e0041b6558e9f",
                "md5": "0e978498639c42f9e21053fd5a513b02",
                "sha256": "6e169ff04e9d7835c1fff672c3f253d871388fbb1b1b15de6da004b842a96db8"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0e978498639c42f9e21053fd5a513b02",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 3836547,
            "upload_time": "2024-09-18T06:33:37",
            "upload_time_iso_8601": "2024-09-18T06:33:37.425127Z",
            "url": "https://files.pythonhosted.org/packages/87/45/5a029e908166a8727d5c32f361fea4bbbfd2e0bf7aad905e0041b6558e9f/sqlcycli-1.1.1-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b250e39cb309df2862e77cb955fbbef18c6d45d431f232f3299b3de8f8f4828",
                "md5": "af3126a180175b9516682c9c964fb02f",
                "sha256": "71007137d4712be530de97fdf55b5fc22c33b92f9c62b0a71d409e31459b956a"
            },
            "downloads": -1,
            "filename": "sqlcycli-1.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "af3126a180175b9516682c9c964fb02f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 2474116,
            "upload_time": "2024-09-18T06:33:39",
            "upload_time_iso_8601": "2024-09-18T06:33:39.427517Z",
            "url": "https://files.pythonhosted.org/packages/9b/25/0e39cb309df2862e77cb955fbbef18c6d45d431f232f3299b3de8f8f4828/sqlcycli-1.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-18 06:33:39",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "AresJef",
    "github_project": "SQLCyCli",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "numpy",
            "specs": [
                [
                    ">=",
                    "1.25.2"
                ]
            ]
        },
        {
            "name": "orjson",
            "specs": [
                [
                    ">=",
                    "3.10.2"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    ">=",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "mysqlclient",
            "specs": [
                [
                    ">=",
                    "2.2.0"
                ]
            ]
        }
    ],
    "lcname": "sqlcycli"
}
        
Elapsed time: 1.55137s