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 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.9.0.tar.gz (37.5 kB view details)

Uploaded Source

Built Distribution

privex_db-0.9.0-py3-none-any.whl (45.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: privex_db-0.9.0.tar.gz
  • Upload date:
  • Size: 37.5 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.9.0.tar.gz
Algorithm Hash digest
SHA256 c5fc5a6aff3f4976121496f84d95f8eb47906c2705bfc00a4938163ad6e3d9ed
MD5 80878d4fe43e55360acd7f49b0645873
BLAKE2b-256 2d3c111743a9188e6dc074c4f1748b94946cbcae901e23f0fc391a43bf910629

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: privex_db-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 45.8 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.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 103476669de1ab50bebe6d4691f8a8bd7b0f23df8926d7e58f8aa7cebcb6cb41
MD5 8829a6cede89c5705d8573137a47456f
BLAKE2b-256 169026c32191deacfc7686b60b2c3d93950bb2ba6ac1dc6e0976e3a406066b35

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