Metadata-Version: 2.1
Name: corebases
Version: 0.1.2
Summary: Full power of *asyncpg* with user friendly api of *sqlalchemy.core*
Home-page: https://github.com/zueve/corebases
License: BSD
Author: Evgeny Zuev
Author-email: zueves@gmail.com
Requires-Python: >=3.7,<4.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: SQLAlchemy (>=1.4.0,<2.0.0)
Requires-Dist: asyncpg (>=0.25,<0.26)
Project-URL: Documentation, https://github.com/zueve/corebases
Project-URL: Repository, https://github.com/zueve/corebases
Description-Content-Type: text/markdown

# Corebases

> Full power of *asyncpg* with user friendly api of *sqlalchemy.core*


Corebases - is *async* adapter for [Sqlalchemy.Core](https://docs.sqlalchemy.org/en/14/core/).
Interface and code based on [encode/databases](https://github.com/encode/databases), but has bit [difference](#difference-between-encodedatabases). Now supported only **asycnpg** driver (but It's possible to extend)

Current status - **Experimental**

## Reason for create fork
 - https://github.com/encode/databases/issues/403#issue-1016133277

## Install
```bash
> pip install corebases
```

## Usage

```python
# Create a database instance, and connect to it.
from corebases import database
database = database('postgres://user:pass@localhost:5432')
await database.connect()

# Insert some data.
query = "INSERT INTO HighScores(name, score) VALUES (:name, :score)"
value =  {"name": "Daisy", "score": 92}

with database.transaction() as db:
    await db.execute(query=query, value=value)

# Run a database query.
query = "SELECT * FROM HighScores"
rows = await database.fetch_all(query=query)
print('High Scores:', rows)

await database.disconnect()


```

## Difference between encode/databases
Principal is a bit of difference in interface on transactions:

*encode/database*:

```python
with database.transaction():
    await database.execute(query=query, value=value)

```

*corebases*:

```python
with database.transaction() as db:
    await db.execute(query=query, value=value)

```

Also, *corebases* doesn't support methods:
- feach_val
- execute_many

But we can add in the future.

