# ddcDatabases
[](https://www.paypal.com/ncp/payment/6G9Z78QHUD4RJ)
[](https://opensource.org/licenses/MIT)
[](https://pypi.python.org/pypi/ddcDatabases)
[](https://pepy.tech/projects/ddcDatabases)
[](https://codecov.io/gh/ddc/ddcDatabases)
[](https://github.com/ddc/ddcDatabases/actions/workflows/workflow.yml)
[](https://sonarcloud.io/dashboard?id=ddc_ddcDatabases)
[](https://actions-badge.atrox.dev/ddc/ddcDatabases/goto?ref=main)
[](https://github.com/psf/black)
[](https://www.python.org/downloads)
[](https://github.com/sponsors/ddc)
A Python library for database connections and ORM queries with support for multiple database engines including SQLite, PostgreSQL, MySQL, MSSQL, Oracle, and MongoDB.
## Table of Contents
- [Installation](#installation)
- [Basic Installation (SQLite only)](#basic-installation-sqlite-only)
- [Database-Specific Installations](#database-specific-installations)
- [Features](#features)
- [Default Session Settings](#default-session-settings)
- [Database Classes](#database-classes)
- [SQLite](#sqlite)
- [MSSQL (SQL Server)](#mssql-sql-server)
- [PostgreSQL](#postgresql)
- [MySQL](#mysql)
- [Oracle](#oracle)
- [MongoDB](#mongodb)
- [Database Engines](#database-engines)
- [Database Utilities](#database-utilities)
- [Available Methods](#available-methods)
- [Development](#development)
- [Building from Source](#building-from-source)
- [Running Tests](#running-tests)
- [License](#license)
- [Support](#support)
## Features
- **Multiple Database Support**: SQLite, PostgreSQL, MySQL, MSSQL, Oracle, and MongoDB
- **Sync and Async Support**: Both synchronous and asynchronous operations
- **Environment Configuration**: Optional parameters with `.env` file fallback
- **SQLAlchemy Integration**: Built on top of SQLAlchemy ORM
- **Connection Pooling**: Configurable connection pooling for better performance
### Default Session Settings
**Synchronous Sessions:**
- `autoflush = True`
- `expire_on_commit = True`
- `echo = False`
**Asynchronous Sessions:**
- `autoflush = True`
- `expire_on_commit = False`
- `echo = False`
**Note:** All constructor parameters are optional and fall back to [.env](./ddcDatabases/.env.example) file variables.
## Installation
### Basic Installation (SQLite only)
```shell
pip install ddcDatabases
```
**Note:** The basic installation includes only SQlite. Database-specific drivers are optional extras that you can install as needed.
### Database-Specific Installations
Install only the database drivers you need:
```shell
# All database drivers (recommended for development)
pip install ddcDatabases[all]
# SQL Server / MSSQL
pip install ddcDatabases[mssql]
# MySQL / MariaDB
pip install ddcDatabases[mysql]
# PostgreSQL
pip install ddcDatabases[pgsql]
# Oracle Database
pip install ddcDatabases[oracle]
# MongoDB
pip install ddcDatabases[mongodb]
# Multiple databases (example)
pip install ddcDatabases[mysql,pgsql,mongodb]
```
**Available Database Extras:**
- `all` - All database drivers
- `mssql` - Microsoft SQL Server (pyodbc, aioodbc)
- `mysql` - MySQL/MariaDB (pymysql, aiomysql)
- `pgsql` - PostgreSQL (psycopg2-binary, asyncpg)
- `oracle` - Oracle Database (cx-oracle)
- `mongodb` - MongoDB (pymongo)
**Platform Notes:**
- SQLite support is included by default (no extra installation required)
- PostgreSQL extras may have compilation requirements on some systems
- All extras support both synchronous and asynchronous operations where applicable
## Database Classes
### SQLite
```python
class Sqlite(
filepath: Optional[str] = None,
echo: Optional[bool] = None,
autoflush: Optional[bool] = None,
expire_on_commit: Optional[bool] = None,
extra_engine_args: Optional[dict] = None,
)
```
**Example:**
```python
import sqlalchemy as sa
from ddcDatabases import DBUtils, Sqlite
from your_models import User # Your SQLAlchemy model
with Sqlite() as session:
db_utils = DBUtils(session)
stmt = sa.select(User).where(User.id == 1)
results = db_utils.fetchall(stmt)
for row in results:
print(row)
```
### MSSQL (SQL Server)
```python
class MSSQL(
host: Optional[str] = None,
port: Optional[int] = None,
user: Optional[str] = None,
password: Optional[str] = None,
database: Optional[str] = None,
schema: Optional[str] = None,
echo: Optional[bool] = None,
pool_size: Optional[int] = None,
max_overflow: Optional[int] = None,
autoflush: Optional[bool] = None,
expire_on_commit: Optional[bool] = None,
extra_engine_args: Optional[dict] = None,
)
```
**Synchronous Example:**
```python
import sqlalchemy as sa
from ddcDatabases import DBUtils, MSSQL
from your_models import User
with MSSQL() as session:
stmt = sa.select(User).where(User.id == 1)
db_utils = DBUtils(session)
results = db_utils.fetchall(stmt)
for row in results:
print(row)
```
**Asynchronous Example:**
```python
import sqlalchemy as sa
from ddcDatabases import DBUtilsAsync, MSSQL
from your_models import User
async def main():
async with MSSQL() as session:
stmt = sa.select(User).where(User.id == 1)
db_utils = DBUtilsAsync(session)
results = await db_utils.fetchall(stmt)
for row in results:
print(row)
```
### PostgreSQL
```python
class PostgreSQL(
host: Optional[str] = None,
port: Optional[int] = None,
user: Optional[str] = None,
password: Optional[str] = None,
database: Optional[str] = None,
echo: Optional[bool] = None,
autoflush: Optional[bool] = None,
expire_on_commit: Optional[bool] = None,
engine_args: Optional[dict] = None,
)
```
**Synchronous Example:**
```python
import sqlalchemy as sa
from ddcDatabases import DBUtils, PostgreSQL
from your_models import User
with PostgreSQL() as session:
stmt = sa.select(User).where(User.id == 1)
db_utils = DBUtils(session)
results = db_utils.fetchall(stmt)
for row in results:
print(row)
```
**Asynchronous Example:**
```python
import sqlalchemy as sa
from ddcDatabases import DBUtilsAsync, PostgreSQL
from your_models import User
async def main():
async with PostgreSQL() as session:
stmt = sa.select(User).where(User.id == 1)
db_utils = DBUtilsAsync(session)
results = await db_utils.fetchall(stmt)
for row in results:
print(row)
```
### MySQL
**Synchronous Example:**
```python
import sqlalchemy as sa
from ddcDatabases import DBUtils, MySQL
with MySQL() as session:
stmt = sa.text("SELECT * FROM users WHERE id = :user_id")
db_utils = DBUtils(session)
results = db_utils.fetchall(stmt, {"user_id": 1})
for row in results:
print(row)
```
### Oracle
```python
class Oracle(
host: Optional[str] = None,
port: Optional[int] = None,
user: Optional[str] = None,
password: Optional[str] = None,
servicename: Optional[str] = None,
echo: Optional[bool] = None,
autoflush: Optional[bool] = None,
expire_on_commit: Optional[bool] = None,
extra_engine_args: Optional[dict] = None,
)
```
**Example with explicit credentials:**
```python
import sqlalchemy as sa
from ddcDatabases import DBUtils, Oracle
credentials = {
"host": "127.0.0.1",
"user": "system",
"password": "oracle",
"servicename": "xe",
"echo": False,
}
with Oracle(**credentials) as session:
stmt = sa.text("SELECT * FROM dual")
db_utils = DBUtils(session)
results = db_utils.fetchall(stmt)
for row in results:
print(row)
```
### MongoDB
```python
class MongoDB(
host: Optional[str] = None,
port: Optional[int] = None,
user: Optional[str] = None,
password: Optional[str] = None,
database: Optional[str] = None,
batch_size: Optional[int] = None,
limit: Optional[int] = None,
)
```
**Example with explicit credentials:**
```python
from ddcDatabases.mongodb import MongoDB
from bson.objectid import ObjectId
credentials = {
"host": "127.0.0.1",
"user": "admin",
"password": "admin",
"database": "admin",
}
with MongoDB(**credentials) as mongodb:
query = {"_id": ObjectId("6772cf60f27e7e068e9d8985")}
collection = "movies"
with mongodb.cursor(collection, query) as cursor:
for document in cursor:
print(document)
```
## Database Engines
Access the underlying SQLAlchemy engine for advanced operations:
**Synchronous Engine:**
```python
from ddcDatabases import PostgreSQL
with PostgreSQL() as session:
engine = session.bind
# Use engine for advanced operations
```
**Asynchronous Engine:**
```python
from ddcDatabases import PostgreSQL
async def main():
async with PostgreSQL() as session:
engine = session.bind
# Use engine for advanced operations
```
## Database Utilities
The `DBUtils` and `DBUtilsAsync` classes provide convenient methods for common database operations:
### Available Methods
```python
from ddcDatabases import DBUtils, DBUtilsAsync
# Synchronous utilities
db_utils = DBUtils(session)
results = db_utils.fetchall(stmt) # Returns list of RowMapping objects
value = db_utils.fetchvalue(stmt) # Returns single value as string
db_utils.insert(stmt) # Insert into model table
db_utils.deleteall(model) # Delete all records from model
db_utils.insertbulk(model, data_list) # Bulk insert from list of dictionaries
db_utils.execute(stmt) # Execute any SQLAlchemy statement
# Asynchronous utilities (similar interface with await)
db_utils_async = DBUtilsAsync(session)
results = await db_utils_async.fetchall(stmt)
```
## Development
### Building from Source
```shell
poetry build -f wheel
```
### Running Tests
```shell
poetry update --with test
poe tests
```
## License
Released under the [MIT License](LICENSE)
## Support
If you find this project helpful, consider supporting development:
- [GitHub Sponsor](https://github.com/sponsors/ddc)
- [ko-fi](https://ko-fi.com/ddcsta)
- [PayPal](https://www.paypal.com/ncp/payment/6G9Z78QHUD4RJ)
Raw data
{
"_id": null,
"home_page": null,
"name": "ddcDatabases",
"maintainer": "Daniel Costa",
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": null,
"keywords": "python3, python-3, python, databases, database, ddcDatabases, mongodb, mongodb-database, mssql, mssql-database, mysql, mysql-database, oracle, oracle-database, pgsql, postgres, postgresql, postgressql, postgresql-database, sqlite, sqlite3, sqlite3-database",
"author": "Daniel Costa",
"author_email": "danieldcsta@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/3e/63/6b2be5b5fffa68525f672b6a81ec40413835f39f5664c326ea4470098845/ddcdatabases-2.0.1.tar.gz",
"platform": null,
"description": "# ddcDatabases\n\n[](https://www.paypal.com/ncp/payment/6G9Z78QHUD4RJ)\n[](https://opensource.org/licenses/MIT)\n[](https://pypi.python.org/pypi/ddcDatabases)\n[](https://pepy.tech/projects/ddcDatabases)\n[](https://codecov.io/gh/ddc/ddcDatabases)\n[](https://github.com/ddc/ddcDatabases/actions/workflows/workflow.yml)\n[](https://sonarcloud.io/dashboard?id=ddc_ddcDatabases) \n[](https://actions-badge.atrox.dev/ddc/ddcDatabases/goto?ref=main)\n[](https://github.com/psf/black)\n[](https://www.python.org/downloads)\n\n[](https://github.com/sponsors/ddc)\n\n\nA Python library for database connections and ORM queries with support for multiple database engines including SQLite, PostgreSQL, MySQL, MSSQL, Oracle, and MongoDB.\n\n## Table of Contents\n\n- [Installation](#installation)\n - [Basic Installation (SQLite only)](#basic-installation-sqlite-only)\n - [Database-Specific Installations](#database-specific-installations)\n- [Features](#features)\n - [Default Session Settings](#default-session-settings)\n- [Database Classes](#database-classes)\n - [SQLite](#sqlite)\n - [MSSQL (SQL Server)](#mssql-sql-server)\n - [PostgreSQL](#postgresql)\n - [MySQL](#mysql)\n - [Oracle](#oracle)\n - [MongoDB](#mongodb)\n- [Database Engines](#database-engines)\n- [Database Utilities](#database-utilities)\n - [Available Methods](#available-methods)\n- [Development](#development)\n - [Building from Source](#building-from-source)\n - [Running Tests](#running-tests)\n- [License](#license)\n- [Support](#support)\n\n\n## Features\n\n- **Multiple Database Support**: SQLite, PostgreSQL, MySQL, MSSQL, Oracle, and MongoDB\n- **Sync and Async Support**: Both synchronous and asynchronous operations\n- **Environment Configuration**: Optional parameters with `.env` file fallback\n- **SQLAlchemy Integration**: Built on top of SQLAlchemy ORM\n- **Connection Pooling**: Configurable connection pooling for better performance\n\n### Default Session Settings\n\n**Synchronous Sessions:**\n- `autoflush = True`\n- `expire_on_commit = True` \n- `echo = False`\n\n**Asynchronous Sessions:**\n- `autoflush = True`\n- `expire_on_commit = False`\n- `echo = False`\n\n**Note:** All constructor parameters are optional and fall back to [.env](./ddcDatabases/.env.example) file variables.\n\n\n## Installation\n\n### Basic Installation (SQLite only)\n```shell\npip install ddcDatabases\n```\n\n**Note:** The basic installation includes only SQlite. Database-specific drivers are optional extras that you can install as needed.\n\n### Database-Specific Installations\n\nInstall only the database drivers you need:\n\n```shell\n# All database drivers (recommended for development)\npip install ddcDatabases[all]\n\n# SQL Server / MSSQL\npip install ddcDatabases[mssql]\n\n# MySQL / MariaDB\npip install ddcDatabases[mysql]\n\n# PostgreSQL\npip install ddcDatabases[pgsql]\n\n# Oracle Database\npip install ddcDatabases[oracle]\n\n# MongoDB\npip install ddcDatabases[mongodb]\n\n# Multiple databases (example)\npip install ddcDatabases[mysql,pgsql,mongodb]\n```\n\n**Available Database Extras:**\n- `all` - All database drivers\n- `mssql` - Microsoft SQL Server (pyodbc, aioodbc)\n- `mysql` - MySQL/MariaDB (pymysql, aiomysql)\n- `pgsql` - PostgreSQL (psycopg2-binary, asyncpg)\n- `oracle` - Oracle Database (cx-oracle)\n- `mongodb` - MongoDB (pymongo)\n\n**Platform Notes:**\n- SQLite support is included by default (no extra installation required)\n- PostgreSQL extras may have compilation requirements on some systems\n- All extras support both synchronous and asynchronous operations where applicable\n\n\n## Database Classes\n\n### SQLite\n\n```python\nclass Sqlite(\n filepath: Optional[str] = None,\n echo: Optional[bool] = None,\n autoflush: Optional[bool] = None,\n expire_on_commit: Optional[bool] = None,\n extra_engine_args: Optional[dict] = None,\n)\n```\n\n**Example:**\n```python\nimport sqlalchemy as sa\nfrom ddcDatabases import DBUtils, Sqlite\nfrom your_models import User # Your SQLAlchemy model\n\nwith Sqlite() as session:\n db_utils = DBUtils(session)\n stmt = sa.select(User).where(User.id == 1)\n results = db_utils.fetchall(stmt)\n for row in results:\n print(row)\n```\n\n\n\n\n\n### MSSQL (SQL Server)\n\n```python\nclass MSSQL(\n host: Optional[str] = None,\n port: Optional[int] = None,\n user: Optional[str] = None,\n password: Optional[str] = None,\n database: Optional[str] = None,\n schema: Optional[str] = None,\n echo: Optional[bool] = None,\n pool_size: Optional[int] = None,\n max_overflow: Optional[int] = None,\n autoflush: Optional[bool] = None,\n expire_on_commit: Optional[bool] = None,\n extra_engine_args: Optional[dict] = None,\n)\n```\n\n**Synchronous Example:**\n```python\nimport sqlalchemy as sa\nfrom ddcDatabases import DBUtils, MSSQL\nfrom your_models import User\n\nwith MSSQL() as session:\n stmt = sa.select(User).where(User.id == 1)\n db_utils = DBUtils(session)\n results = db_utils.fetchall(stmt)\n for row in results:\n print(row)\n```\n\n**Asynchronous Example:**\n```python\nimport sqlalchemy as sa\nfrom ddcDatabases import DBUtilsAsync, MSSQL\nfrom your_models import User\n\nasync def main():\n async with MSSQL() as session:\n stmt = sa.select(User).where(User.id == 1)\n db_utils = DBUtilsAsync(session)\n results = await db_utils.fetchall(stmt)\n for row in results:\n print(row)\n```\n\n\n\n\n\n\n### PostgreSQL\n\n```python\nclass PostgreSQL(\n host: Optional[str] = None,\n port: Optional[int] = None,\n user: Optional[str] = None,\n password: Optional[str] = None,\n database: Optional[str] = None,\n echo: Optional[bool] = None,\n autoflush: Optional[bool] = None,\n expire_on_commit: Optional[bool] = None,\n engine_args: Optional[dict] = None,\n)\n```\n\n**Synchronous Example:**\n```python\nimport sqlalchemy as sa\nfrom ddcDatabases import DBUtils, PostgreSQL\nfrom your_models import User\n\nwith PostgreSQL() as session:\n stmt = sa.select(User).where(User.id == 1)\n db_utils = DBUtils(session)\n results = db_utils.fetchall(stmt)\n for row in results:\n print(row)\n```\n\n**Asynchronous Example:**\n```python\nimport sqlalchemy as sa\nfrom ddcDatabases import DBUtilsAsync, PostgreSQL\nfrom your_models import User\n\nasync def main():\n async with PostgreSQL() as session:\n stmt = sa.select(User).where(User.id == 1)\n db_utils = DBUtilsAsync(session)\n results = await db_utils.fetchall(stmt)\n for row in results:\n print(row)\n```\n\n### MySQL\n\n**Synchronous Example:**\n```python\nimport sqlalchemy as sa\nfrom ddcDatabases import DBUtils, MySQL\n\nwith MySQL() as session:\n stmt = sa.text(\"SELECT * FROM users WHERE id = :user_id\")\n db_utils = DBUtils(session)\n results = db_utils.fetchall(stmt, {\"user_id\": 1})\n for row in results:\n print(row)\n```\n\n\n\n\n### Oracle\n\n```python\nclass Oracle(\n host: Optional[str] = None,\n port: Optional[int] = None,\n user: Optional[str] = None,\n password: Optional[str] = None,\n servicename: Optional[str] = None,\n echo: Optional[bool] = None,\n autoflush: Optional[bool] = None,\n expire_on_commit: Optional[bool] = None,\n extra_engine_args: Optional[dict] = None,\n)\n```\n\n**Example with explicit credentials:**\n```python\nimport sqlalchemy as sa\nfrom ddcDatabases import DBUtils, Oracle\n\ncredentials = {\n \"host\": \"127.0.0.1\",\n \"user\": \"system\",\n \"password\": \"oracle\",\n \"servicename\": \"xe\",\n \"echo\": False,\n}\n\nwith Oracle(**credentials) as session:\n stmt = sa.text(\"SELECT * FROM dual\")\n db_utils = DBUtils(session)\n results = db_utils.fetchall(stmt)\n for row in results:\n print(row)\n```\n\n\n\n\n\n\n\n\n### MongoDB\n\n```python\nclass MongoDB(\n host: Optional[str] = None,\n port: Optional[int] = None,\n user: Optional[str] = None,\n password: Optional[str] = None,\n database: Optional[str] = None,\n batch_size: Optional[int] = None,\n limit: Optional[int] = None,\n)\n```\n\n**Example with explicit credentials:**\n```python\nfrom ddcDatabases.mongodb import MongoDB\nfrom bson.objectid import ObjectId\n\ncredentials = {\n \"host\": \"127.0.0.1\",\n \"user\": \"admin\",\n \"password\": \"admin\",\n \"database\": \"admin\",\n}\n\nwith MongoDB(**credentials) as mongodb:\n query = {\"_id\": ObjectId(\"6772cf60f27e7e068e9d8985\")}\n collection = \"movies\"\n with mongodb.cursor(collection, query) as cursor:\n for document in cursor:\n print(document)\n```\n\n\n\n\n\n\n\n\n## Database Engines\n\nAccess the underlying SQLAlchemy engine for advanced operations:\n\n**Synchronous Engine:**\n```python\nfrom ddcDatabases import PostgreSQL\n\nwith PostgreSQL() as session:\n engine = session.bind\n # Use engine for advanced operations\n```\n\n**Asynchronous Engine:**\n```python\nfrom ddcDatabases import PostgreSQL\n\nasync def main():\n async with PostgreSQL() as session:\n engine = session.bind\n # Use engine for advanced operations\n```\n\n\n\n\n## Database Utilities\n\nThe `DBUtils` and `DBUtilsAsync` classes provide convenient methods for common database operations:\n\n### Available Methods\n\n```python\nfrom ddcDatabases import DBUtils, DBUtilsAsync\n\n# Synchronous utilities\ndb_utils = DBUtils(session)\nresults = db_utils.fetchall(stmt) # Returns list of RowMapping objects\nvalue = db_utils.fetchvalue(stmt) # Returns single value as string\ndb_utils.insert(stmt) # Insert into model table\ndb_utils.deleteall(model) # Delete all records from model\ndb_utils.insertbulk(model, data_list) # Bulk insert from list of dictionaries\ndb_utils.execute(stmt) # Execute any SQLAlchemy statement\n\n# Asynchronous utilities (similar interface with await)\ndb_utils_async = DBUtilsAsync(session)\nresults = await db_utils_async.fetchall(stmt)\n```\n\n\n\n\n## Development\n\n### Building from Source\n```shell\npoetry build -f wheel\n```\n\n### Running Tests\n```shell\npoetry update --with test\npoe tests\n```\n\n## License\n\nReleased under the [MIT License](LICENSE)\n\n## Support\n\nIf you find this project helpful, consider supporting development:\n\n- [GitHub Sponsor](https://github.com/sponsors/ddc)\n- [ko-fi](https://ko-fi.com/ddcsta)\n- [PayPal](https://www.paypal.com/ncp/payment/6G9Z78QHUD4RJ)\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Database ORM Connections and Queries",
"version": "2.0.1",
"project_urls": {
"Homepage": "https://pypi.org/project/ddcDatabases",
"Repository": "https://github.com/ddc/ddcDatabases"
},
"split_keywords": [
"python3",
" python-3",
" python",
" databases",
" database",
" ddcdatabases",
" mongodb",
" mongodb-database",
" mssql",
" mssql-database",
" mysql",
" mysql-database",
" oracle",
" oracle-database",
" pgsql",
" postgres",
" postgresql",
" postgressql",
" postgresql-database",
" sqlite",
" sqlite3",
" sqlite3-database"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6c7dfeb092b127b6959236fe3eb73163ac484dbf078b52ac0246a9c418ada094",
"md5": "7914fd52754a25d86cd50375f14d02f1",
"sha256": "2d9dacd57ac8d82c0d8a046d14d5b02777613a0b4759be098dc6177b0c328a5f"
},
"downloads": -1,
"filename": "ddcdatabases-2.0.1-cp312-cp312-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "7914fd52754a25d86cd50375f14d02f1",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.12",
"size": 15821,
"upload_time": "2025-07-25T17:54:16",
"upload_time_iso_8601": "2025-07-25T17:54:16.895487Z",
"url": "https://files.pythonhosted.org/packages/6c/7d/feb092b127b6959236fe3eb73163ac484dbf078b52ac0246a9c418ada094/ddcdatabases-2.0.1-cp312-cp312-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "afdcab1f5a5dbb68e99b552e06d6218159572b39a30cba334d0ea98329d85274",
"md5": "6a2afe924ff737426df042a3c0a748fd",
"sha256": "9ecdf806eb744eaaa241e202f1a396d7f04db5acc5f230b2694e8f2df8981054"
},
"downloads": -1,
"filename": "ddcdatabases-2.0.1-cp312-cp312-manylinux_2_39_x86_64.whl",
"has_sig": false,
"md5_digest": "6a2afe924ff737426df042a3c0a748fd",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.12",
"size": 15826,
"upload_time": "2025-07-25T17:54:17",
"upload_time_iso_8601": "2025-07-25T17:54:17.829942Z",
"url": "https://files.pythonhosted.org/packages/af/dc/ab1f5a5dbb68e99b552e06d6218159572b39a30cba334d0ea98329d85274/ddcdatabases-2.0.1-cp312-cp312-manylinux_2_39_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0307078a13edff593cd112a5e76c7cdc5530f92d09b1e79a972a06ea45f1c298",
"md5": "ce05524c77ddfb266c33c4cbfd51abfb",
"sha256": "eb100807015e2b2cf0b54b27a332c17d8c179bab717635983839bf40db41d41c"
},
"downloads": -1,
"filename": "ddcdatabases-2.0.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "ce05524c77ddfb266c33c4cbfd51abfb",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.12",
"size": 15932,
"upload_time": "2025-07-25T17:54:18",
"upload_time_iso_8601": "2025-07-25T17:54:18.792400Z",
"url": "https://files.pythonhosted.org/packages/03/07/078a13edff593cd112a5e76c7cdc5530f92d09b1e79a972a06ea45f1c298/ddcdatabases-2.0.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0b5e320fe8a9e86a0324d33aea1e455d2253df5b3b0e9781acd73f85992f0691",
"md5": "9a822e75fe494cf6d082e5e5bc9d5c7f",
"sha256": "4a5778a2465105e38d1bd9cfb169d3f6f829c0a90001d7b232f9245b90c29588"
},
"downloads": -1,
"filename": "ddcdatabases-2.0.1-cp313-cp313-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "9a822e75fe494cf6d082e5e5bc9d5c7f",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.12",
"size": 15820,
"upload_time": "2025-07-25T17:54:19",
"upload_time_iso_8601": "2025-07-25T17:54:19.499951Z",
"url": "https://files.pythonhosted.org/packages/0b/5e/320fe8a9e86a0324d33aea1e455d2253df5b3b0e9781acd73f85992f0691/ddcdatabases-2.0.1-cp313-cp313-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d01a3e30a41cfe77ec9eda702acc7b59e8ca5a535aeab426536041a41a340727",
"md5": "b16fd54d7dc5327d6f28495e0ad9d451",
"sha256": "4500215976488234860fab4a5c9875926b69d009f52db6038980570365a42a2e"
},
"downloads": -1,
"filename": "ddcdatabases-2.0.1-cp313-cp313-manylinux_2_39_x86_64.whl",
"has_sig": false,
"md5_digest": "b16fd54d7dc5327d6f28495e0ad9d451",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.12",
"size": 15823,
"upload_time": "2025-07-25T17:54:20",
"upload_time_iso_8601": "2025-07-25T17:54:20.251440Z",
"url": "https://files.pythonhosted.org/packages/d0/1a/3e30a41cfe77ec9eda702acc7b59e8ca5a535aeab426536041a41a340727/ddcdatabases-2.0.1-cp313-cp313-manylinux_2_39_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5ec6d6470e9fc4f976be983268bcad0173f7413e0fc5e282fab862ed3f0f3033",
"md5": "79bac7c5bed21cef8701b0941f67e3e6",
"sha256": "45b78c68c6463dc91ab20635e8ef627a604601f91edf5067cece7b26f7d15013"
},
"downloads": -1,
"filename": "ddcdatabases-2.0.1-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "79bac7c5bed21cef8701b0941f67e3e6",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.12",
"size": 15934,
"upload_time": "2025-07-25T17:54:21",
"upload_time_iso_8601": "2025-07-25T17:54:21.017125Z",
"url": "https://files.pythonhosted.org/packages/5e/c6/d6470e9fc4f976be983268bcad0173f7413e0fc5e282fab862ed3f0f3033/ddcdatabases-2.0.1-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3e636b2be5b5fffa68525f672b6a81ec40413835f39f5664c326ea4470098845",
"md5": "443e11d053811de149aace0bad65c386",
"sha256": "fac4867dc9616dd1431bcdb4a0c0ec8c145c57c69062be5b3a01cd70a1cabdad"
},
"downloads": -1,
"filename": "ddcdatabases-2.0.1.tar.gz",
"has_sig": false,
"md5_digest": "443e11d053811de149aace0bad65c386",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 14804,
"upload_time": "2025-07-25T17:54:21",
"upload_time_iso_8601": "2025-07-25T17:54:21.778693Z",
"url": "https://files.pythonhosted.org/packages/3e/63/6b2be5b5fffa68525f672b6a81ec40413835f39f5664c326ea4470098845/ddcdatabases-2.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-25 17:54:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ddc",
"github_project": "ddcDatabases",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "ddcdatabases"
}