Skip to content

truethari/ReallySimpleDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ReallySimpleDB 🧩

Icon

tests Codacy Badge PyPI version made-with-python Downloads

What is This


This is a Python application that can be used to manage sqlite databases without using any sql command.

🚀 Installation

You can use pip:

~$ pip3 install ReallySimpleDB

or

~$ python setup.py install

📗 Usage

>> from ReallySimpleDB import dbmanager

>> _dbmanager = dbmanager()

Create database

>> _dbmanager.create_db(dbpath="test.db", replace=True)

Close connection

>> _dbmanager.close_connection()

Create table

Here you can not directly call the create_table function. Because sqlite cannot create table without columns. So you must first define the columns and create a table.

Important: You have to close connection here. If not, code returns error. Because it tries to add column to existing table.

>> _dbmanager.close_connection()
>> _dbmanager.add_columns(column_name="student_id", primary_key=True)
>> _dbmanager.add_columns(column_name="name", not_null=True)
>> _dbmanager.add_columns(column_name="mark", datatype="INT")

>> _dbmanager.create_table(database="test.db", table_name="STUDENTS")

If you want to add columns to an existing table, read the Add column to table section.

Get all tables

>> all_tables = _dbmanager.all_tables()

["STUDENT", "EXAM"]

Check table if exists

>> _dbmanager.is_table(database="test.db", table_name="STUDENTS")

True

Delete table from database

>> _dbmanager.delete_table(table="STUDENTS")

Add column to table

>> _dbmanager.add_columns(column_name="year", database="test.db", table="STUDENTS")

Get all columns

>> _dbmanager.get_columns(table="STUDENTS")

["student_id", "name", "mark"]

Get all columns with types

>> all_columns = _dbmanager.get_all_column_types(table="STUDENTS")

{"student_id": "TEXT", "name": "TEXT", "mark": "INT"}

Get columns type

>> _dbmanager.get_column_type(table="STUDENTS", column="student_id")

"TEXT"

Get primary key of a table

>> _dbmanager.get_primary_key(table="STUDENTS")

"student_id"

Add record to table

>> _dbmanager.add_record(table="STUDENTS", record={"student_id": "1010", "name":"ABC", "mark":10, "year":"2022"})

Get all records from a table

>> _dbmanager.get_all_records(table="STUDENTS", primary_key="1010")

[{'student_id': '1010', 'name': 'ABC', 'mark': 10, 'year': '2022'}, {'student_id': '1011', 'name': 'DEF', 'mark': 100, 'year': '2022'}]

Get record from a table

>> _dbmanager.get_record(table="STUDENTS", primary_key="1010")

{'student_id': '1010', 'name': 'ABC', 'mark': 10, 'year': '2022'}

Delete record from a table

>> _dbmanager.delete_record(table="STUDENTS", primary_key="1010")

Filter record/s from a table

If you want to filter equal values, add value without any operator.

Examples:

  • {"year":2022} ✔️
  • {"year":" == 2022"}

🖇 Comparison operators

Comparison Operator Description
!= Not Equal
> Greater Than
>= Greater Than or Equal
< Less Than
<= Less Than or Equal

Examples:

  • {"marks":"<= 10"} ✔️
  • {"marks":"== 10"}
  • {"name":"< ABC"} ❌ 'Greater Than' and 'Less than' comparisons are not supported with Strings

Important: If you are trying to compare strings, please use string between Inch Marks.

  • {"grade":"!= 'A'"} ✔️
  • {"grade":"!= A"}
>> _dbmanager.filter_records(table="STUDENTS", values={"year":"2022"})

[{'student_id': '1010', 'name': 'ABC', 'mark': 10, 'year': '2022'}, {'student_id': '1011', 'name': 'DEF', 'mark': 100, 'year': '2022'}]

🌱 Contributing Guide

  • Fork the project from the alpha branch and submit a Pull Request (PR)

    • Explain what the PR fixes or improves.

    • If your PR aims to add a new feature, provide test functions as well.

  • Use sensible commit messages

    • If your PR fixes a separate issue number, include it in the commit message.
  • Use a sensible number of commit messages as well

    • e.g. Your PR should not have 1000s of commits.

Run pytest without installing package

If you are adding new functions as described above, please add test functions to tests/test_manager.py.

~$ python -m pytest -s tests