python DB API wrapper (MySQL, PostgreSQL, SQLite)
Project description
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/q2db && cd q2db/database.docker
./up.sh
./down.sh
- on your system:
pip install q2db
git clone https://github.com/AndreiPuchko/q2db && cd q2db
# 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 q2db.db import Q2Db
database_sqlite = Q2Db("sqlite3", database_name=":memory:")
# or just
database_sqlite = Q2Db()
database_mysql = Q2Db(
"mysql",
user="root",
password="q2test"
host="0.0.0.0",
port="3308",
database_name="q2test",
)
# or just
database_mysql = Q2Db(url="mysql://root:q2test@0.0.0.0:3308/q2test")
database_postgresql = Q2Db(
"postgresql",
user="q2user",
password="q2test"
host="0.0.0.0",
port=5432,
database_name="q2test1",
)
Define & migrate database schema (ADD COLUMN only).
q2db.schema import Q2DbSchema
schema = Q2DbSchema()
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
q2db-0.1.50.tar.gz
(21.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
q2db-0.1.50-py3-none-any.whl
(24.1 kB
view details)
File details
Details for the file q2db-0.1.50.tar.gz.
File metadata
- Download URL: q2db-0.1.50.tar.gz
- Upload date:
- Size: 21.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.0 CPython/3.11.7 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ce276b3abf82c6d2cc4de98d867d7db91d329c7e7ca142b992e4e5892c2646a
|
|
| MD5 |
f5e286a487f343786c0caa87f7589607
|
|
| BLAKE2b-256 |
5c00810d4fbb65a65ad13a5fe270cddad47edca4ae425f90d0d5302ac17f50d0
|
File details
Details for the file q2db-0.1.50-py3-none-any.whl.
File metadata
- Download URL: q2db-0.1.50-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.0 CPython/3.11.7 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5089544c213f1ae95660e13e71b06112a37bba97577fac7d0b94eb59f038584e
|
|
| MD5 |
2c25cc4003bd5e35477cf7c76b9043f5
|
|
| BLAKE2b-256 |
2da929e95e419af777ce2ccd26c00c24627d5c5e01a25f0fca95e5598fa629f8
|