Skip to content

This is a python package that makes it easier to work with sqlite

License

Notifications You must be signed in to change notification settings

JefvdA/sqlite_middleware

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sqlite middleware

This package removes all the annoying boilerplate code you have to write when using sqlite3. Instead, use the methods this package provides, and easily manage your sqlite database in your python project.

Downloads GitHub issues GitHub closed issues GitHub contributors PyPI GitHub release (latest by date) MIT License

Installation

For more information, check out the PyPi page

To install the newest version, use:

pip install sqlite-middleware

Db class:

All the functionality of this package is in the Db class. When creating a new instance of this class, you should specify following parameters:

  • database: (str) name of the sqlite file

Example usage:

db = Db("demo.db")

When an instance of Db is deleted, the __del__ magic method will close the connection.

Methods

Here are all the methods that the Db class provides:

Select all

This method will retrieve and return all objects of a certain class from the sqlite database.

Parameters:

  • cls: (Class) class of the objects you want to retrieve

Example usage:

db.select_all(Person)

Select by id

This method will retrieve and return an object with certain id and class from the database.

Parameters:

  • cls: (Class) class of the object you want to retrieve
  • id: (int) id of the object you want to retrieve

Example usage:

db.select_by_id(Person, 2)

Select by custom attribute

This method will retrieve and return an object with certain value for a certain attribute

Parameters:

  • cls: (Class) class of the object you want to retrieve
  • custom_attribute: (str) string of the column of the attribute you want to search for
  • value: (any) value of this attribute you are searching for

Example usage:

db.select_by_custom_attribute(Person, "name", "John Doe")

Create table

This method will create a table in the database for objects of a certain class.

Parameters:

  • object: (Instance) instance of the class you want to create a new table for.

Example usage:

db.create_table(Person())

Save object

This method will save an object in the database.

It will also create a table if it doesn't exist yet.

Parameters:

  • object: (Instance) object you want to save in the database.

Example usage:

person = Person("John Doe")
db.save_object(person)

Update object

This method will update an existing object in the database.

Parameters:

  • id: (int) id of the object you want to update.
  • object: (Instance) object containing new values you want to save in the database.

Example usage:

person = Person("John Doe")
db.save_object(person) # Say this is the first person, and gets id 1

person.set_name("Michael Myers")
db.update_object(1, person)

Delete object

This method will delete an object from the database.

Parameters:

  • cls: (Class) class of the object you want to delete.
  • id: (int) id of the object you want to delete

Example usage:

person = Person("John Doe")
db.save_object(person) # Say this is the first person, and gets id 1

db.delete_object(Person, 1)

How does it work

Table names

By default table names are created with the name of the class you specified. tbl[Classname]s

The reason that we must pass an object, and not a class, to db.create_table(), is because it takes all the instance variables of this object and uses them to create a column in the sqlite table.

For example with a class named Person, which has a name parameter:

db.create_table(Person())

The line above would create a table, with name tblPersons and it would have 2 columns name, and also an auto-generated column for id.

As we need id's to specify what object to delte, the id needs to be stored in the database, this is done automatically when creating a table / saving an object.

About

This is a python package that makes it easier to work with sqlite

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages