
HissDB is a SQLite3 frontend with a focus on ease-of-use and tight integration with Python syntax.
Installation
python3 -m pip install hissdb
Usage
Database Setup
from hissdb import Database
db = Database('test_location.db')
users = db.create_table(
id = 'INTEGER PRIMARY KEY',
first_name = 'TEXT',
last_name = 'TEXT',
age = 'INTEGER',
)
posts = db.create_table(
user_id = 'INTEGER NOT NULL',
text = 'TEXT',
date = 'INTEGER',
foreign_keys = {'user_id': users.id},
)
Writing Data
jane_id = users.insert(first_name = 'Jane', last_name = 'Doe')
john_id = users.insert(first_name = 'John', last_name = 'Doe')
posts.insert(
user_id = john_id,
date = 20210817,
text = "I'm John Doe and this is my first post!"
)
posts.insertmany(
cols = ['user_id', 'date', 'text'],
rows = [
(jane_id, 20210814, "First!"),
(jane_id, 20210816, "The weather is nice today."),
(jane_id, 20210817, "Do you ever post on the internet just so there's content?"),
],
)
posts.update(
text = posts.text + ' - ' + users.first_name,
where = users.id == jane_id,
)
db.commit()
Reading Data
names = users.fetchall(cols=['first_name', 'last_name'])
assert names == [('Jane', 'Doe'), ('John', 'Doe')]
first_names = users.first_name.fetchall()
assert first_names == ['Jane', 'John']
does = users.id.fetchall(where=users.last_name == 'Doe')
does = users.id.fetchall(last_name='Doe')
assert does = [1, 2]
users.insert(first_name='Dave', last_name='Guy')
non_j_name = users.first_name.fetchone(~users.first_name.startswith('J'))
assert non_j_name == 'Dave'
full_names = users.fetchall(cols=(users.first_name + ' ' + users.last_name))
assert full_names == [('Jane Doe',), ('John Doe',), ('Dave Guy',)]
For more sample code using HissDB, see the tests.
If you're looking for more detailed documentation, check out the library reference.