Skip to main content

The python postgreSQL ORM

Project description

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')]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dbsession-0.6.7.tar.gz (4.9 kB view details)

Uploaded Source

File details

Details for the file dbsession-0.6.7.tar.gz.

File metadata

  • Download URL: dbsession-0.6.7.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for dbsession-0.6.7.tar.gz
Algorithm Hash digest
SHA256 8c3dd8ce8ecc8bee1f3fe6a83ac411feaee5333407a590195aacca9143301c03
MD5 237c1acc975a37f43b501c224fd7ab48
BLAKE2b-256 6fa346a43f3a1038096c40bc0cf61668fc392d5449f810626b12014d2b498d3b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page