Skip to main content

python DB API wrapper (MySQL, PostgreSQL, SQLite)

Project description

Python application

The light Python DB API wrapper with some ORM functions (MySQL, PostgreSQL, SQLite)

Quick start (run demo files)

- in docker:

git clone https://github.com/AndreiPuchko/zzdb && cd zzdb/database.docker
./up.sh
./down.sh

- on your system:

pip install zzdb
git clone https://github.com/AndreiPuchko/zzdb && cd zzdb
# sqlite:
python3 ./demo/demo.py
# mysql and postgresql:
pip install mysql-connector-python psycopg2-binary
pushd database.docker && docker-compose up -d && popd
python3 ./demo/demo_mysql.py
python3 ./demo/demo_postgresql.py
pushd database.docker && docker-compose down -v && popd

Features:


Connect

from zzdb.db import ZzDb

database_sqlite = ZzDb("sqlite3", database_name=":memory:")
# or just
database_sqlite = ZzDb()


database_mysql = ZzDb(
    "mysql",
    user="root",
    password="zztest"
    host="0.0.0.0",
    port="3308",
    database_name="zztest",
)
# or just
database_mysql = ZzDb(url="mysql://root:zztest@0.0.0.0:3308/zztest")

database_postgresql = ZzDb(
    "postgresql",
    user="zzuser",
    password="zztest"
    host="0.0.0.0",
    port=5432,
    database_name="zztest1",
)

Define & migrate database schema (ADD COLUMN only).

zzdb.schema import ZzDbSchema

schema = ZzDbSchema()

schema.add(table="topic_table", column="uid", datatype="int", datalen=9, pk=True)
schema.add(table="topic_table", column="name", datatype="varchar", datalen=100)

schema.add(table="message_table", column="uid", datatype="int", datalen=9, pk=True)
schema.add(table="message_table", column="message", datatype="varchar", datalen=100)
schema.add(
    table="message_table",
    column="parent_uid",
    to_table="topic_table",
    to_column="uid",
    related="name"
)

database.set_schema(schema)

INSERT, UPDATE, DELETE

database.insert("topic_table", {"name": "topic 0"})
database.insert("topic_table", {"name": "topic 1"})
database.insert("topic_table", {"name": "topic 2"})
database.insert("topic_table", {"name": "topic 3"})

database.insert("message_table", {"message": "Message 0 in 0", "parent_uid": 0})
database.insert("message_table", {"message": "Message 1 in 0", "parent_uid": 0})
database.insert("message_table", {"message": "Message 0 in 1", "parent_uid": 1})
database.insert("message_table", {"message": "Message 1 in 1", "parent_uid": 1})

# this returns False because there is no value 2 in topic_table.id - schema works!
database.insert("message_table", {"message": "Message 1 in 1", "parent_uid": 2})


database.delete("message_table", {"uid": 2})

database.update("message_table", {"uid": 0, "message": "updated message"})

Cursor

cursor = database.cursor(table_name="topic_table")
cursor = database.cursor(
    table_name="topic_table",
    where=" name like '%2%'",
    order="name desc"
)
cursor.insert({"name": "insert record via cursor"})
cursor.delete({"uid": 2})
cursor.update({"uid": 0, "message": "updated message"})

cursor = database.cursor(sql="select name from topic_table")

for x in cursor.records():
    print(x)
    print(cursor.r.name)

cursor.record(0)['name']
cursor.row_count()
cursor.first()
cursor.last()
cursor.next()
cursor.prev()
cursor.bof()
cursor.eof()

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

zzdb-0.1.11.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zzdb-0.1.11-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file zzdb-0.1.11.tar.gz.

File metadata

  • Download URL: zzdb-0.1.11.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.9.5 Linux/5.11.0-49-generic

File hashes

Hashes for zzdb-0.1.11.tar.gz
Algorithm Hash digest
SHA256 1e8de547f628cebae86d788d82f25ee1e755851e47df96e403b92ed6fc590375
MD5 926576c4e2698ca0bff3784ad48b08b8
BLAKE2b-256 0bc66b78bb7f79114e41e02a4787c72fe3be041ebd02d5b4e7de8ebf398e26b1

See more details on using hashes here.

File details

Details for the file zzdb-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: zzdb-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 19.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.9.5 Linux/5.11.0-49-generic

File hashes

Hashes for zzdb-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 c81dc112b2a4b53fde963067486249823713f235b1dce97539dffd0d638d7598
MD5 a356e2cef3c0967eac8972f2d11c3ae8
BLAKE2b-256 2d43f94d03c090151c3f404be4f1d06466d33918cf9f1e0cb1366bcbb08fdf02

See more details on using hashes here.

Supported by

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