Skip to main content

A minimalist SQLite wrapper library for Python which supports ORM features.

Project description


Puchikarui is a minimalist SQLite helper library for Python 3 which supports ORM features.

Documentation Status Total alerts Language grade: Python Build Status codecov

Sample code

from puchikarui import Database

setup_script = """
   name TEXT NOT NULL,
   age INTEGER);"""
db = Database("test/data/demo.db",
# create new persons
for name, age in zip("ABCDE", range(20, 25)):
    db.insert("person", name=f"Person {name}", age=age)
# update data
db.update("person", "age = age + 2", where="age >= 20")
# Select data using parameters
for person in"person", where="age > ?", values=(23,)):

Sample ORM code

from puchikarui import Database

       name TEXT,
       age INTEGER

class PeopleDB(Database):
  def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.add_table('person', 'ID name age', id_cols='ID')

db = PeopleDB('test.db')
people =
# create sample people records in the first run
if not people:
  print("Creating people records ...")
  for name, age in zip('ABCDE', range(20, 25)):
    db.person.insert(f'Person {name}', age)
  people =

print("All people")
for person in people:
  print(person.ID,, person.age)

For more information please see puchikarui documentation.


puchikarui is available on PyPI and can be installed using pip.

pip install puchikarui

Why puchikarui

puchikarui is a tiny, 100% pure-Python library that provides extra functionality to Python 3's sqlite3 module. It helps working directly with sqlite3 easier, with less magic, and more control, rather than hiding sqlite3 module away from the users.

Although puchikarui does provide some ORM-like features, it is NOT an ORM library. If you want ORM features, please consider PonyORM, SQLAlchemy, or peewee.


  • Working with simple use cases is simple (e.g. just create a new DB object with db = Database('file.db') and start working)
  • Database can be loaded into memory before querying for boosting up performance
  • connections and cursors can be created, used, and closed automatically or manually
  • Flexible execution context management (single or multiple cursors)
  • Use up-to-date database best practices (using parameters to prevent SQL injection, optimize settings for buck insert, et cetera)
  • Defining database schemas is simple


The name puchikarui came from two Japanese words プチ (puchi) which means small, and 軽い (karui), which means light, soft, and gentle.

It represents the motivation for developing this library: a tiny, lightweight library that makes working with sqlite3 simpler.

$ python3 -m jamdict lookup "プチ"
Found entries
Entry: 1115200 | Kj:   | Kn: プチ
1. small ((prefix))

$ python3 -m jamdict lookup "軽い"
Found entries
Entry: 1252560 | Kj:  軽い | Kn: かるい, かろい
1. light (i.e. not heavy)/feeling light (i.e. offering little resistance, moving easily) ((adjective (keiyoushi)))
2. light (i.e. of foot)/effortless/nimble/agile ((adjective (keiyoushi)))
3. non-serious/minor/unimportant/trivial ((adjective (keiyoushi)))
4. slight/small/gentle/soft/easy/lighthearted (e.g. joke) ((adjective (keiyoushi)))
5. easy/simple ((adjective (keiyoushi)))
6. indiscriminate ((adjective (keiyoushi)))

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for puchikarui, version 0.2a2
Filename, size File type Python version Upload date Hashes
Filename, size puchikarui-0.2a2.tar.gz (18.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page