Name | pgfusion JSON |
Version |
0.0.11
JSON |
| download |
home_page | None |
Summary | An asyncpg wrapper with a simple api |
upload_time | 2022-12-12 07:56:55 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.10.4 |
license | MIT |
keywords |
asyncio
asyncpg
postgres
python
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pgfusion
[![PyPI version](https://badge.fury.io/py/pgfusion.svg)](https://pypi.org/project/pgfusion/)
An asyncpg wrapper with a simple api.
The only dependency for **pgfusion** is
[asyncpg](https://github.com/MagicStack/asyncpg), and the api wrapper is very similar to
the api provieded by the [databases](https://github.com/encode/databases) package.
## Installation
```bash
$ pip install pgfusion
```
## Quickstart
```python
from pgfusion import Database
database = Database("postgresql://username:password@localhost:5432/postgres")
await database.connect()
# Execute a query
query = """
create table high_scores (
id uuid primary key default gen_random_uuid(),
name varchar(100) not null,
score integer not null
)
"""
await database.execute(query)
# Execute many queries
query = "insert into high_scores (name, score) values (:name, :score)"
values = [
{"name": "George", "score": 43},
{"name": "Jess", "score": 67},
{"name": "Kevin", "score": 30}
]
await database.execute_many(query, values)
# Fetch many rows
query = "select * from high_scores"
records = await database.fetch_many(query)
assert(len(records) == 3)
# Fetch a row
query = "select * from high_scores where name = :name"
values = {"name": "George"}
record = await database.fetch_one(query, values)
assert(record.score == 43)
# Fetch a value
query = "select name from high_scores where score = :score"
values = {"score": 30}
value = await database.fetch_val(query, values)
assert(value == "Kevin")
# Copy records to a table (via Postgres COPY)
await database.copy_records_to_table(
"high_scores",
records=[("Mav", 200), ("Connor", 134)],
columns=["name", "score"]
)
# Work with individual connections
async with database.connection() as connection:
...
# Create a transaction
async with connection.transaction():
...
await database.disconnect()
```
Raw data
{
"_id": null,
"home_page": null,
"name": "pgfusion",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10.4",
"maintainer_email": null,
"keywords": "asyncio,asyncpg,postgres,python",
"author": null,
"author_email": "Wayde Gilliam <waydegilliam@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/fd/0e/8dba71f7df2ac127ec6acfb1a551cb7680c5276b669bb0a2c18cd70bd4c4/pgfusion-0.0.11.tar.gz",
"platform": null,
"description": "# pgfusion\n\n[![PyPI version](https://badge.fury.io/py/pgfusion.svg)](https://pypi.org/project/pgfusion/)\n\nAn asyncpg wrapper with a simple api.\n\nThe only dependency for **pgfusion** is\n[asyncpg](https://github.com/MagicStack/asyncpg), and the api wrapper is very similar to\nthe api provieded by the [databases](https://github.com/encode/databases) package.\n\n## Installation\n\n```bash\n$ pip install pgfusion\n```\n\n## Quickstart\n\n```python\nfrom pgfusion import Database\n\ndatabase = Database(\"postgresql://username:password@localhost:5432/postgres\")\nawait database.connect()\n\n# Execute a query\nquery = \"\"\"\n create table high_scores (\n id uuid primary key default gen_random_uuid(),\n name varchar(100) not null,\n score integer not null\n )\n\"\"\"\nawait database.execute(query)\n\n# Execute many queries\nquery = \"insert into high_scores (name, score) values (:name, :score)\"\nvalues = [\n {\"name\": \"George\", \"score\": 43},\n {\"name\": \"Jess\", \"score\": 67},\n {\"name\": \"Kevin\", \"score\": 30}\n]\nawait database.execute_many(query, values)\n\n# Fetch many rows\nquery = \"select * from high_scores\"\nrecords = await database.fetch_many(query)\nassert(len(records) == 3)\n\n# Fetch a row\nquery = \"select * from high_scores where name = :name\"\nvalues = {\"name\": \"George\"}\nrecord = await database.fetch_one(query, values)\nassert(record.score == 43)\n\n# Fetch a value\nquery = \"select name from high_scores where score = :score\"\nvalues = {\"score\": 30}\nvalue = await database.fetch_val(query, values)\nassert(value == \"Kevin\")\n\n# Copy records to a table (via Postgres COPY)\nawait database.copy_records_to_table(\n \"high_scores\",\n records=[(\"Mav\", 200), (\"Connor\", 134)],\n columns=[\"name\", \"score\"]\n)\n\n# Work with individual connections\nasync with database.connection() as connection:\n ...\n\n # Create a transaction\n async with connection.transaction():\n ...\n\nawait database.disconnect()\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "An asyncpg wrapper with a simple api",
"version": "0.0.11",
"split_keywords": [
"asyncio",
"asyncpg",
"postgres",
"python"
],
"urls": [
{
"comment_text": null,
"digests": {
"md5": "87d6af83dfa8fcb34d97334a8dbefb1c",
"sha256": "9357e4edc716004ebd6333b64a431d85904a947c1b068219c050369e3c7d10a1"
},
"downloads": -1,
"filename": "pgfusion-0.0.11-py3-none-any.whl",
"has_sig": false,
"md5_digest": "87d6af83dfa8fcb34d97334a8dbefb1c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10.4",
"size": 5112,
"upload_time": "2022-12-12T07:56:59",
"upload_time_iso_8601": "2022-12-12T07:56:59.157560Z",
"url": "https://files.pythonhosted.org/packages/fc/3b/52ddf5e003f21d25fa8eb5b3c3ff813465850b397c6f9e14140e2d1ef7b7/pgfusion-0.0.11-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"md5": "34da8769d757f775d589c290ac81e04f",
"sha256": "284a29d8fb3bcee6e239020489191c60617de12a1b45d50e299a4eee1ade1023"
},
"downloads": -1,
"filename": "pgfusion-0.0.11.tar.gz",
"has_sig": false,
"md5_digest": "34da8769d757f775d589c290ac81e04f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10.4",
"size": 4208,
"upload_time": "2022-12-12T07:56:55",
"upload_time_iso_8601": "2022-12-12T07:56:55.260941Z",
"url": "https://files.pythonhosted.org/packages/fd/0e/8dba71f7df2ac127ec6acfb1a551cb7680c5276b669bb0a2c18cd70bd4c4/pgfusion-0.0.11.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-12-12 07:56:55",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "pgfusion"
}