Skip to main content

Privex's Python Database helpers and wrappers (mini ORM)

Project description

Privex's Python Database Library

Build Status Codecov PyPi Version License Button PyPI - Downloads PyPI - Python Version PyPI - Django Version GitHub last commit

+===================================================+
|                 © 2019 Privex Inc.                |
|               https://www.privex.io               |
+===================================================+
|                                                   |
|        Privex's Python Database Library           |
|        License: X11 / MIT                         |
|                                                   |
|        Originally Developed by Privex Inc.        |
|        Core Developer(s):                         |
|                                                   |
|          (+)  Chris (@someguy123) [Privex]        |
|                                                   |
+===================================================+

Privex's Python Database Library - Database wrappers, query builders, and other useful DB-related classes/functions
Copyright (c) 2019     Privex Inc.   ( https://www.privex.io )

README under construction.

Install with pip

We recommend at least Python 3.6 - we cannot guarantee compatibility with older versions.

pip3 install privex-db

Basic Usage

Basic usage with SqliteWrapper and SqliteBuilder (db.builder())

from os.path import expanduser
from privex.db import SqliteWrapper

# Open or create the database file ~/.my_app/my_app.db
db = SqliteWrapper(expanduser("~/.my_app/my_app.db"))

# Create the table 'items' and insert some items
db.action("CREATE TABLE items (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);")
db.action("INSERT INTO items (name) VALUES (?);", ["Cardboard Box"])
db.action("INSERT INTO items (name) VALUES (?);", ["Orange"])
db.action("INSERT INTO items (name) VALUES (?);", ["Banana"])
db.action("INSERT INTO items (name) VALUES (?);", ["Stack of Paper"])

item = db.fetchone("SELECT * FROM items WHERE name = ?", ['Orange'])

print(item.id, '-', item.name)
# Output: 2 - Orange

q = db.builder('items')
# Privex QueryBuilder's support chaining similar to Django's ORM
q.select('id', 'name') \           # SELECT id, name FROM items
    .where('name', 'Orange') \     # WHERE name = 'Orange'
    .where_or('name', 'Banana') \  # OR name = 'Banana'
    .order('name', 'id')           # ORDER BY name, id DESC

# You can either iterate directly over the query builder object
for row in q:
    print(f"ID: {row.id}   Name: {row.name}")
# Output:
# ID: 3   Name: Banana
# ID: 2   Name: Orange

# Or you can use .fetch / .all to grab a single row, or all rows as a list
item = db.builder('items').where('name', 'Orange').fetch()
# {'id': 2, 'name': 'Orange'}
items = db.builder('items').all()
# [ {'id': 1, 'name': 'Cardboard Box'}, {'id': 2, 'name': 'Orange'}, ... ]

Documentation

Read the Documentation

Full documentation for this project is available above (click the Read The Docs image), including:

  • How to install the application and it's dependencies
  • How to use the various functions and classes
  • General documentation of the modules and classes for contributors

To build the documentation:

pip3 install pipenv
git clone https://github.com/Privex/python-db
cd python-db/docs
pipenv install -d

# It's recommended to run make clean to ensure old HTML files are removed
# `make html` generates the .html and static files in docs/build for production
make clean && make html

# After the files are built, you can live develop the docs using `make live`
# then browse to http://127.0.0.1:8100/
# If you have issues with content not showing up correctly, try make clean && make html
# then run make live again.
make live

Unit Tests

To run the unit tests, clone the project and make a .env file containing details for a PostgreSQL database (for the Postgres wrapper + builder tests).

DB_USER=yourname
DB_NAME=privex_py_db
DB_BACKEND=postgresql
LOG_LEVEL=DEBUG

Install all required dependencies:

pip3 install pipenv
pipenv install -d

Now run the tests (-v for more detailed testing output):

pipenv run pytest -rxXs -v

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

privex_db-0.7.0.tar.gz (27.4 kB view details)

Uploaded Source

Built Distribution

privex_db-0.7.0-py3-none-any.whl (31.9 kB view details)

Uploaded Python 3

File details

Details for the file privex_db-0.7.0.tar.gz.

File metadata

  • Download URL: privex_db-0.7.0.tar.gz
  • Upload date:
  • Size: 27.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.8.0

File hashes

Hashes for privex_db-0.7.0.tar.gz
Algorithm Hash digest
SHA256 e3fee5ed1d7280b6edff20d7ddcfb5881c8a9fcb5f999771573eea537420c9d4
MD5 b1b1f79e36c0a752ebb5ee5fad23f7c0
BLAKE2b-256 30e8efad21e08306c400ad061ff144667c3ebe044d427a8cfffcdc907f1d9178

See more details on using hashes here.

Provenance

File details

Details for the file privex_db-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: privex_db-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 31.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.8.0

File hashes

Hashes for privex_db-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8af0dceb5398e9eb0a57b734174dc50f0d9186b19b0827c101839bcb542d27ae
MD5 0c63fd3ccffbcef3e06ec68754a3040c
BLAKE2b-256 20ab85fb4efd51ca3f37714d115f60d60410b40ae504d7c70bf3ad7122f205ab

See more details on using hashes here.

Provenance

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