CryptoSqlite


NameCryptoSqlite JSON
Version 0.0.3 PyPI version JSON
download
home_pageNone
Summarypython version of sqlcipher
upload_time2024-12-06 02:38:47
maintainerNone
docs_urlNone
authorzkh
requires_python<4.0,>=3.7
licenseMIT License
keywords sqlite3 cipher
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # CryptoSqlite

正儿八经的`sqlite3`结合`sqlcipher`, 且符合`dbapi2`标准的python模块。 兼容各个python版本。

## 安装

本项目python版本要求>= 3.7, 支持Linux、Windows。已有预编译版本`>=3.7 and <=3.12`。

### 源码安装

> 源码安装请确保网络能够流畅访问`github`

默认情况下, 会下载最新的sqlcipher进行编译安装, 如果需要指定版本, 确保在编译前设置环境变量`SQLCIPHER_VERSION`,如`v4.6.1`。

如果系统已经存在sqlcipher, 请设置环境变量`SQLCIPHER_INCLUDE_DIRS`为`sqlite.h`头文件位置,`SQLCIPHER_LIBRARY_DIRS`为`sqlcipher.lib`或`libsqlcipher.a`所在位置。


> 如果设置了`SQLCIPHER_VERSION`将会忽略`SQLCIPHER_INCLUDE_DIRS`及`SQLCIPHER_LIBRARY_DIRS`环境变量

#### Windows

要求: 
- msvc 编译器
- nmake
- 如果python版本低于3.9, 需要确保系统安装了`tclsh`, 且在`PATH`环境变量中


#### Linux

要求: 
- gcc 编译器
- make
- libtool

## 示例

### 加密

```python
key='123456'
exist_db = 'test.db3'
newdb = 'encrypt_db.db3'

conn = sqlite3.connect(exist_db)
cur = conn.cursor()
cur.execute(f"ATTACH DATABASE '{newdb}' AS encrypted KEY '{self.key}'")
cur.execute("SELECT sqlcipher_export('encrypted')")
cur.execute("DETACH DATABASE encrypted")
assert os.path.exists(newdb)

cur.close()
conn.close()
```

### 解密

```python
key='123456'
encrypt_db = 'test.db3'

conn = sqlite3.connect(encrypt_db)
cur = conn.cursor()
cur.execute(f"PRAGMA key='{key}'") 
res = cur.execute("SELECT name FROM sqlite_master")
assert res.fetchone()[0] == 'movie'

cur.close()
conn.close()
```


### 导出为非加密db

```python
olddbname = 'encrypt_xxx.db3'
plaindbname = 'plain_xxx.db3'
key = '123456'
con = sqlite3.connect(olddbname)

cur = con.cursor()
dbname = 'plaindb'
cur.execute(f"PRAGMA key='{key}'")
cur.execute(f"ATTACH DATABASE '{plaindbname}' AS {dbname} KEY ''")
cur.execute(f"SELECT sqlcipher_export('{dbname}')")
cur.execute(f"DETACH DATABASE {dbname}")
cur.close()
con.close()

# 判断是否导出成功
assert os.path.exists(plaindbname)
```

### 修改密码

```python
dbname = 'dbtest.db3'
oldkey = '123456'
newkey = '654321'

conn = sqlite3.connect(dbname)
cur = conn.cursor()
cur.execute(f"PRAGMA key='{oldkey}'") 
cur.execute(f"PRAGMA rekey='{newkey}'") 
cur.close()
conn.close()
```







            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "CryptoSqlite",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.7",
    "maintainer_email": null,
    "keywords": "sqlite3, cipher",
    "author": "zkh",
    "author_email": "404937333@qq.com",
    "download_url": "https://files.pythonhosted.org/packages/5d/2b/3cf51f933c36a97445144063f56f6bfd4313d36670d9acd47c8ba0fd68b7/cryptosqlite-0.0.3.tar.gz",
    "platform": "Windows",
    "description": "# CryptoSqlite\r\n\r\n\u6b63\u513f\u516b\u7ecf\u7684`sqlite3`\u7ed3\u5408`sqlcipher`, \u4e14\u7b26\u5408`dbapi2`\u6807\u51c6\u7684python\u6a21\u5757\u3002 \u517c\u5bb9\u5404\u4e2apython\u7248\u672c\u3002\r\n\r\n## \u5b89\u88c5\r\n\r\n\u672c\u9879\u76eepython\u7248\u672c\u8981\u6c42>= 3.7\uff0c \u652f\u6301Linux\u3001Windows\u3002\u5df2\u6709\u9884\u7f16\u8bd1\u7248\u672c`>=3.7 and <=3.12`\u3002\r\n\r\n### \u6e90\u7801\u5b89\u88c5\r\n\r\n> \u6e90\u7801\u5b89\u88c5\u8bf7\u786e\u4fdd\u7f51\u7edc\u80fd\u591f\u6d41\u7545\u8bbf\u95ee`github`\r\n\r\n\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c \u4f1a\u4e0b\u8f7d\u6700\u65b0\u7684sqlcipher\u8fdb\u884c\u7f16\u8bd1\u5b89\u88c5\uff0c \u5982\u679c\u9700\u8981\u6307\u5b9a\u7248\u672c\uff0c \u786e\u4fdd\u5728\u7f16\u8bd1\u524d\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf`SQLCIPHER_VERSION`,\u5982`v4.6.1`\u3002\r\n\r\n\u5982\u679c\u7cfb\u7edf\u5df2\u7ecf\u5b58\u5728sqlcipher, \u8bf7\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf`SQLCIPHER_INCLUDE_DIRS`\u4e3a`sqlite.h`\u5934\u6587\u4ef6\u4f4d\u7f6e\uff0c`SQLCIPHER_LIBRARY_DIRS`\u4e3a`sqlcipher.lib`\u6216`libsqlcipher.a`\u6240\u5728\u4f4d\u7f6e\u3002\r\n\r\n\r\n> \u5982\u679c\u8bbe\u7f6e\u4e86`SQLCIPHER_VERSION`\u5c06\u4f1a\u5ffd\u7565`SQLCIPHER_INCLUDE_DIRS`\u53ca`SQLCIPHER_LIBRARY_DIRS`\u73af\u5883\u53d8\u91cf\r\n\r\n#### Windows\r\n\r\n\u8981\u6c42: \r\n- msvc \u7f16\u8bd1\u5668\r\n- nmake\r\n- \u5982\u679cpython\u7248\u672c\u4f4e\u4e8e3.9\uff0c \u9700\u8981\u786e\u4fdd\u7cfb\u7edf\u5b89\u88c5\u4e86`tclsh`, \u4e14\u5728`PATH`\u73af\u5883\u53d8\u91cf\u4e2d\r\n\r\n\r\n#### Linux\r\n\r\n\u8981\u6c42: \r\n- gcc \u7f16\u8bd1\u5668\r\n- make\r\n- libtool\r\n\r\n## \u793a\u4f8b\r\n\r\n### \u52a0\u5bc6\r\n\r\n```python\r\nkey='123456'\r\nexist_db = 'test.db3'\r\nnewdb = 'encrypt_db.db3'\r\n\r\nconn = sqlite3.connect(exist_db)\r\ncur = conn.cursor()\r\ncur.execute(f\"ATTACH DATABASE '{newdb}' AS encrypted KEY '{self.key}'\")\r\ncur.execute(\"SELECT sqlcipher_export('encrypted')\")\r\ncur.execute(\"DETACH DATABASE encrypted\")\r\nassert os.path.exists(newdb)\r\n\r\ncur.close()\r\nconn.close()\r\n```\r\n\r\n### \u89e3\u5bc6\r\n\r\n```python\r\nkey='123456'\r\nencrypt_db = 'test.db3'\r\n\r\nconn = sqlite3.connect(encrypt_db)\r\ncur = conn.cursor()\r\ncur.execute(f\"PRAGMA key='{key}'\") \r\nres = cur.execute(\"SELECT name FROM sqlite_master\")\r\nassert res.fetchone()[0] == 'movie'\r\n\r\ncur.close()\r\nconn.close()\r\n```\r\n\r\n\r\n### \u5bfc\u51fa\u4e3a\u975e\u52a0\u5bc6db\r\n\r\n```python\r\nolddbname = 'encrypt_xxx.db3'\r\nplaindbname = 'plain_xxx.db3'\r\nkey = '123456'\r\ncon = sqlite3.connect(olddbname)\r\n\r\ncur = con.cursor()\r\ndbname = 'plaindb'\r\ncur.execute(f\"PRAGMA key='{key}'\")\r\ncur.execute(f\"ATTACH DATABASE '{plaindbname}' AS {dbname} KEY ''\")\r\ncur.execute(f\"SELECT sqlcipher_export('{dbname}')\")\r\ncur.execute(f\"DETACH DATABASE {dbname}\")\r\ncur.close()\r\ncon.close()\r\n\r\n# \u5224\u65ad\u662f\u5426\u5bfc\u51fa\u6210\u529f\r\nassert os.path.exists(plaindbname)\r\n```\r\n\r\n### \u4fee\u6539\u5bc6\u7801\r\n\r\n```python\r\ndbname = 'dbtest.db3'\r\noldkey = '123456'\r\nnewkey = '654321'\r\n\r\nconn = sqlite3.connect(dbname)\r\ncur = conn.cursor()\r\ncur.execute(f\"PRAGMA key='{oldkey}'\") \r\ncur.execute(f\"PRAGMA rekey='{newkey}'\") \r\ncur.close()\r\nconn.close()\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "python version of sqlcipher",
    "version": "0.0.3",
    "project_urls": null,
    "split_keywords": [
        "sqlite3",
        " cipher"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0aa3f150844e3716fdc7f03ebb7b6866663e59f82161d57654b2e83a0ef89909",
                "md5": "8ef3123127d893a7561555bb30bdda72",
                "sha256": "3c86865eff71506f18fe6e634293f7412ab64f89e263c9394a80eb1f4457ce11"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp310-cp310-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8ef3123127d893a7561555bb30bdda72",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<4.0,>=3.7",
            "size": 4541516,
            "upload_time": "2024-12-06T02:38:18",
            "upload_time_iso_8601": "2024-12-06T02:38:18.060990Z",
            "url": "https://files.pythonhosted.org/packages/0a/a3/f150844e3716fdc7f03ebb7b6866663e59f82161d57654b2e83a0ef89909/CryptoSqlite-0.0.3-cp310-cp310-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f64a17970d3c48e1a0a0a4e788776b1d938fccf75c846c391a6563a8dad56ea4",
                "md5": "c1addde8166aea61b1e2b45fca2453ec",
                "sha256": "cf41120a8f1af59184b5f8dd71b9ad3a48c550eefa819233fc969f8e6399253e"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c1addde8166aea61b1e2b45fca2453ec",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<4.0,>=3.7",
            "size": 1325525,
            "upload_time": "2024-12-06T02:38:20",
            "upload_time_iso_8601": "2024-12-06T02:38:20.678496Z",
            "url": "https://files.pythonhosted.org/packages/f6/4a/17970d3c48e1a0a0a4e788776b1d938fccf75c846c391a6563a8dad56ea4/CryptoSqlite-0.0.3-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5fe7aea73cb78a0d499a96cc51240baac7e50ba09012cd94e0e9a99e6c124d60",
                "md5": "77f21ee6568b0ad895f0a60af6bbf5f8",
                "sha256": "ff60318c8efc1d607e84df4ffce14ab70b372958118149e3a9d5b0d09b7c6dc8"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp311-cp311-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "77f21ee6568b0ad895f0a60af6bbf5f8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<4.0,>=3.7",
            "size": 4549899,
            "upload_time": "2024-12-06T02:38:23",
            "upload_time_iso_8601": "2024-12-06T02:38:23.296318Z",
            "url": "https://files.pythonhosted.org/packages/5f/e7/aea73cb78a0d499a96cc51240baac7e50ba09012cd94e0e9a99e6c124d60/CryptoSqlite-0.0.3-cp311-cp311-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "817dfec5c3c07b5e102d6345e332038c08207f2b08745ec2abf1ebb6f133ca49",
                "md5": "4a35a8faa55deb6e596df0a1e790836b",
                "sha256": "a37242beb8e9885b5c4b05a6950fce271e94ea75fda0859fa333e14a5974ef0b"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4a35a8faa55deb6e596df0a1e790836b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<4.0,>=3.7",
            "size": 1332001,
            "upload_time": "2024-12-06T02:38:25",
            "upload_time_iso_8601": "2024-12-06T02:38:25.165638Z",
            "url": "https://files.pythonhosted.org/packages/81/7d/fec5c3c07b5e102d6345e332038c08207f2b08745ec2abf1ebb6f133ca49/CryptoSqlite-0.0.3-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9a0a78a8c89f51086e839a39f32d6ced69960f6a6f684373b0e6cf2aa3dec038",
                "md5": "8151793f9cbdfbbd6878bbcb964e56ad",
                "sha256": "24c0e30b379d52e4fdf4fdedc02351267fcc7ccf438e9cdc0e137c8f7da8d9a2"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp312-cp312-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8151793f9cbdfbbd6878bbcb964e56ad",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<4.0,>=3.7",
            "size": 4551691,
            "upload_time": "2024-12-06T02:38:28",
            "upload_time_iso_8601": "2024-12-06T02:38:28.442082Z",
            "url": "https://files.pythonhosted.org/packages/9a/0a/78a8c89f51086e839a39f32d6ced69960f6a6f684373b0e6cf2aa3dec038/CryptoSqlite-0.0.3-cp312-cp312-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2c2f804a1566f78db3cb44d8b6d1247606cf76bbcf4fb2c4280fe2b25dd913f3",
                "md5": "582004cb645174e3466d72726580c0a1",
                "sha256": "a1c8d7ec994e67c2da946769063b2ab948cc2a26a5d95c91a7897441738a20b3"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "582004cb645174e3466d72726580c0a1",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<4.0,>=3.7",
            "size": 1333755,
            "upload_time": "2024-12-06T02:38:30",
            "upload_time_iso_8601": "2024-12-06T02:38:30.922763Z",
            "url": "https://files.pythonhosted.org/packages/2c/2f/804a1566f78db3cb44d8b6d1247606cf76bbcf4fb2c4280fe2b25dd913f3/CryptoSqlite-0.0.3-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3ed25fa4465514ccec524d6cc12aa77db2bf5c0af1d10a39c2b098efc25d267c",
                "md5": "1fcbfbc08a43df8fd3f196549acb02d2",
                "sha256": "844352bbd17d92dc97a8a948e8d90113213cb133f549ab4e59f0966a80288c58"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp37-cp37m-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1fcbfbc08a43df8fd3f196549acb02d2",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": "<4.0,>=3.7",
            "size": 2592710,
            "upload_time": "2024-12-06T02:38:33",
            "upload_time_iso_8601": "2024-12-06T02:38:33.530648Z",
            "url": "https://files.pythonhosted.org/packages/3e/d2/5fa4465514ccec524d6cc12aa77db2bf5c0af1d10a39c2b098efc25d267c/CryptoSqlite-0.0.3-cp37-cp37m-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fda748d41e9aef1a554e57d5c91e31c920901653e1b54a75da6b08149d80e067",
                "md5": "b7932df2872a24702e47e6b95d02b1c9",
                "sha256": "fc997f516f64636caa172c2bf52b2fb7bbf817b4d838b66d04d92cf06e8345dd"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b7932df2872a24702e47e6b95d02b1c9",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": "<4.0,>=3.7",
            "size": 1316879,
            "upload_time": "2024-12-06T02:38:35",
            "upload_time_iso_8601": "2024-12-06T02:38:35.701368Z",
            "url": "https://files.pythonhosted.org/packages/fd/a7/48d41e9aef1a554e57d5c91e31c920901653e1b54a75da6b08149d80e067/CryptoSqlite-0.0.3-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ae4821302efb24604d1b283a457a66137422ead8831540364e1b2273c9cd8927",
                "md5": "607bc35e6ba3ff0a16317ba160604768",
                "sha256": "48ceaa438bcf1463c784af27491cb2052fdc878f80a0b061322493a030837d74"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp38-cp38-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "607bc35e6ba3ff0a16317ba160604768",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": "<4.0,>=3.7",
            "size": 4627506,
            "upload_time": "2024-12-06T02:38:39",
            "upload_time_iso_8601": "2024-12-06T02:38:39.157393Z",
            "url": "https://files.pythonhosted.org/packages/ae/48/21302efb24604d1b283a457a66137422ead8831540364e1b2273c9cd8927/CryptoSqlite-0.0.3-cp38-cp38-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fbeb6de9c997bbb2369bf841c70a7306ea87a4049e3f99195a61a5ecded36e2b",
                "md5": "5b5fddf2ac3a84636055ceb02b7a2875",
                "sha256": "6bf3afef4a68be3e4f61c7d6fcaba8e5e701b961e12a38a2d4fcaefee173e603"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5b5fddf2ac3a84636055ceb02b7a2875",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": "<4.0,>=3.7",
            "size": 1318077,
            "upload_time": "2024-12-06T02:38:41",
            "upload_time_iso_8601": "2024-12-06T02:38:41.573446Z",
            "url": "https://files.pythonhosted.org/packages/fb/eb/6de9c997bbb2369bf841c70a7306ea87a4049e3f99195a61a5ecded36e2b/CryptoSqlite-0.0.3-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "336ecc49fa443d03515644c63f30d7c5c8191a6b781e48fc519400ba5e74dfce",
                "md5": "c7f6275a926781e788a2288336c4bcb9",
                "sha256": "d2bbffbd6f13911acc34b1573afd66b6dc2c8f0583c0bc50bf6f4c49bf2706e3"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp39-cp39-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c7f6275a926781e788a2288336c4bcb9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": "<4.0,>=3.7",
            "size": 4535768,
            "upload_time": "2024-12-06T02:38:44",
            "upload_time_iso_8601": "2024-12-06T02:38:44.482033Z",
            "url": "https://files.pythonhosted.org/packages/33/6e/cc49fa443d03515644c63f30d7c5c8191a6b781e48fc519400ba5e74dfce/CryptoSqlite-0.0.3-cp39-cp39-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "00c1a51debd64101350c099decca28075e16a3b942816715d970359489c51578",
                "md5": "8add59bf4b2e8535ff710a69aea5582b",
                "sha256": "872491b0648f93191bb523ecaaae604c742172cdd061095088e60772a4d18e98"
            },
            "downloads": -1,
            "filename": "CryptoSqlite-0.0.3-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8add59bf4b2e8535ff710a69aea5582b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": "<4.0,>=3.7",
            "size": 1320469,
            "upload_time": "2024-12-06T02:38:46",
            "upload_time_iso_8601": "2024-12-06T02:38:46.559887Z",
            "url": "https://files.pythonhosted.org/packages/00/c1/a51debd64101350c099decca28075e16a3b942816715d970359489c51578/CryptoSqlite-0.0.3-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5d2b3cf51f933c36a97445144063f56f6bfd4313d36670d9acd47c8ba0fd68b7",
                "md5": "a5947de21a76be00b0ca6697c934d448",
                "sha256": "ccd7c8a2a3305d91a8c530e6ddc6e2ab8750a14a19bb822089c7315b987895c3"
            },
            "downloads": -1,
            "filename": "cryptosqlite-0.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "a5947de21a76be00b0ca6697c934d448",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.7",
            "size": 38928,
            "upload_time": "2024-12-06T02:38:47",
            "upload_time_iso_8601": "2024-12-06T02:38:47.993543Z",
            "url": "https://files.pythonhosted.org/packages/5d/2b/3cf51f933c36a97445144063f56f6bfd4313d36670d9acd47c8ba0fd68b7/cryptosqlite-0.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-06 02:38:47",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "cryptosqlite"
}
        
zkh
Elapsed time: 0.41525s