Pydapper
A micro ORM for the python dbapi spec inspired by the Nuget package Dapper
A pure python library inspired by the NuGet library [dapper](https://dapper-tutorial.net). The project is written primarily in Python, distributed under the MIT License license, first published in 2022. Key topics include: asyncio, dapper, dapper-dot-net, database, google-bigquery.
pydapper
A pure python library inspired by the NuGet library dapper.
pydapper is built on top of the dbapi 2.0 spec
to provide more convenient methods for working with databases in python, with both sync
and async dbapi support.
Help
See the documentation for more details and examples for configuring all
of the connectors pydapper supports.
Installation
It is recommended to only install the database apis you need for your use case. Example below is for psycopg2!
pip
consolepip install pydapper[psycopg2]
poetry
consolepoetry add pydapper -E psycopg2
Supported drivers
The database support docs
go into further detail about how to connect to the different drivers pydapper supports.
In addition to psycopg2, pydapper also supports.
Sync dbapis
pymssqlmysql-connector-pythonoracledbgoogle-cloud-bigquerysqlite3psycopg
Async dbapis
aiopgpsycopg
Never write this again...
pythonfrom psycopg2 import connect @dataclass class Task: id: int description: str due_date: datetime.date with connect("postgresql://pydapper:pydapper@localhost/pydapper") as conn: with conn.cursor() as cursor: cursor.execute("select id, description, due_date from task") headers = [i[0] for i in cursor.description] data = cursor.fetchall() list_data = [Task(**dict(zip(headers, row))) for row in data]
Instead, write...
pythonfrom dataclasses import dataclass import datetime import pydapper @dataclass class Task: id: int description: str due_date: datetime.date with pydapper.connect("postgresql+psycopg2://pydapper:pydapper@locahost/pydapper") as commands: tasks = commands.query("select id, description, due_date from task;", model=Task)
(This script is complete, it should run "as is")
Buy me a coffee
If you find this project useful, consider buying me a coffee!
<a href="https://www.buymeacoffee.com/zachschumacher" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a>
Contributors
Showing top 8 contributors by commit count.
