Skip to main content

dbsession

The python postgreSQL ORM

introduction

DBSession gives simplicity, flexibility and order to the abstraction of database tables into python objects. Right now it's only supporting postgreSQL with psycopg2

Usage

Assuming we have a table named A with the following estructure

 id | name  
----+-------
  1 | Paul  
  2 | George  

Create an archive A.py and create a class for the database abstraction A that inherits from DatabaseObject. The attribute _TABLE_NAME is the database table actual name

from DBSession import DatabaseObject

TABLE_NAME = 'A'

class _A(DatabaseObject):

    _TABLE_NAME = TABLE_NAME

    def __init__(self, row):
        super().__init__(row)

wrapper = _A

Now implement every function associated with this table in the same file. Every function receives the params that goes in the query, and returns a tuple of four items:

  • query (str): The actual query
  • values (Tuple): The params to be replaced into the query
  • wrapper (Object): The class that represent the table
  • many (bool): Whether the query will return one or many instances
def find_by_id(a_id):
    
    query = f"""
        SELECT *
        FROM {TABLE_NAME}
        WHERE id = %s
    """

    values = (a_id, )

    return query, values, wrapper, False

def get_all():

	query = f"""
        SELECT *
        FROM {TABLE_NAME}
    """

    values = ()

    return query, values, wrapper, True

Create a connection to the database using the DBConnection class. It receives the pool instance from psycopg2.

connection_pool = psycopg2.pool.ThreadedConnectionPool(
    MINIMUM_CONNECTION,
    MAXIMUM_CONNECTION,
    user=POSTGRES_USER, 
    password=POSTGRES_PASSWORD, 
    host=POSTGRES_HOST, 
    port=POSTGRES_PORT, 
    database=POSTGRES_DB)


db_connection = DBConnection(connection_pool)

Finally, in the main code. To execute the query just create a DBSession instance, and call the A module functions by using de query function

import A


db_session = db_connection.get_session()
a_1 = db_session.query(A.find_by_id, 1)
print(a_1)
# (1, 'Paul')

all_a = db_session.query(A.get_all)
print(all_a)
# [(1, 'Paul'), (2, 'George')]

Release files for dbsession 0.6.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dbsession 0.6.7
File Size Uploaded
dbsession-0.6.7.tar.gz 4.9 kB Details

Release files / dbsession-0.6.7.tar.gz

Download URL dbsession-0.6.7.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8c3dd8ce8ecc8bee1f3fe6a83ac411feaee5333407a590195aacca9143301c03
BLAKE2b-256 checksum
How to use checksums
6fa346a43f3a1038096c40bc0cf61668fc392d5449f810626b12014d2b498d3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/18.5 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/2.7.16

Release history Release notifications | RSS feed

This release

0.6.7 This release

1 release file

0.6.5

1 release file

0.6.3

1 release file

0.6.0

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5

1 release file

0.4

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page