Простая экспериментальная ORM работы с sqlite. Функциональность:
- создание/удаление таблиц;
- insert/update
- select с указанием необходимых столбцов;
- обработка базовых ошибок (нет таблицы, нет столбца, не указано значение у обязательного столбца);
- поддержка foreign key и автоджоин таблиц, на которые есть fk.
Пользовательский класс наследует класс Base библиотеки
class User(Base):
__tablename__ = 'users'
id = ('int', 'pk')
username = ('char(256)', 'required')
Создание объекта и вызов метода save создает таблицу, если ее нет, и создает новую запись. В конструктор необходима передача объекта conn, получаемого по вызову sqlite3.connect.
user = User(connection=conn, id=1, username='doe')
user.save()
Работа с апи осуществляется вызовом методов на объекте сущности.
- select_all()
Выборка всех записей. При наличии foreign key делает join другой таблицы.
- select_by(condition='AND', **args)
Выборка записей по условиям. Поддерживает передачу предиката and или or.
- create_table(table, columns)
Явное создание таблицы.
- drop_table()
Удаление таблицы сущности.
- update_all(**args)
Обновление указанных полей всех записей.
- update_by_id(id, **args)
Обновление указанных полей по идентификатору записи.
- delete_by(id=4)
Удаление записи по условию.
- delete_all()
Удаление всех записей.
Пример работы можно найти в файле test_orm.py