Privex's Python Database helpers and wrappers (mini ORM)
Project description
Privex's Python Database Library
+===================================================+
| © 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
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | e3fee5ed1d7280b6edff20d7ddcfb5881c8a9fcb5f999771573eea537420c9d4 |
|
MD5 | b1b1f79e36c0a752ebb5ee5fad23f7c0 |
|
BLAKE2b-256 | 30e8efad21e08306c400ad061ff144667c3ebe044d427a8cfffcdc907f1d9178 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8af0dceb5398e9eb0a57b734174dc50f0d9186b19b0827c101839bcb542d27ae |
|
MD5 | 0c63fd3ccffbcef3e06ec68754a3040c |
|
BLAKE2b-256 | 20ab85fb4efd51ca3f37714d115f60d60410b40ae504d7c70bf3ad7122f205ab |