Lion ORM - возможно, самая примитивная ОРМ в мире. Она работает только с sqlite и поддерживает всего 2 типа данных: int и str. В ней нет никаких ленивых запросов и вообще, ничего интересного. Однако ее исходный код может быть вам полезен, если вы хотите узнать, как можно создать свою ОРМ.
Приступим к примерам использования с подключения базы данных:
from lion_orm.connect import SqliteConnect
SqliteConnect("test.db")
Обратите внимание, что SqliteConnect() можно вызвать без аргументов, в этом случае база данных будет создана в оперативной памяти.
Теперь попробуем создать модель данных:
from lion_orm.model import Model
from lion_orm.field import Field
class CarModel(Model):
price = Field(int)
color = Field(str, required=True)
brand = Field(str)
Чего здесь примечательного? Во-первых, вам не нужно создавать поле id. Оно будет создано автоматически и является автоинкрементальным. Во-вторых, Field может принимать тип данных поля как в форме объекта типа данных python, так и в форме строки, соответствующей названию типа данных в sqlite. В третьих, если соответствующая данной модели таблица в базе данных еще не существует, она будет создана вместе с первым же экземпляром.
Что ж, мы создали модель, давайте теперь создадим ее экземпляр:
car = CarModel(price=100000, color="red", brand="audi")
car.save()
Данные экземпляра модели отправляются в базу только при вызове метода save(). Имейте ввиду, что, если вы попытаетесь сохранить в базу данные экземпляра модели, где не заполнены все обязательные атрибуты, вы получите SaveEmptyModelError.
У нас есть экземпляр модели, что дальше? Дальше мы будем делать запросы к базе данных. И начнем мы с select:
rich_cars = car.query.select(price=100000)
В данном примере мы сделали select-запрос прямо из экземпляра модели. Почему так? Ну, у нас примитивная ОРМ. А еще так можно делать в Django.
Также можно выбрать все элементы класса, вызвав метод select() без аргументов:
all_cars = car.query.select()
Как результат select-запроса мы получаем объект класса QuerySet. По своему поведению он напоминает объект списка: по нему можно итерироваться, а также получать из него значения по индексу. Давайте попробуем:
for x in all_cars:
print(x)
first_car = all_cars[0]
print(first_car)
Это работает! А еще все объекты из QuerySet можно удалить сразу, вызвав у него метод delete():
all_cars.delete()
Если после этого вы попытаетесь вновь проитерироваться по данному объекту QuerySet или получить значение по индексу, получите UsingDeletedQuerySetError.
Разумеется, у экземпляров модели тоже есть метод delete():
new_car = CarModel(price=100000, color="blue", brand="audi")
new_car.save() # экземпляр модели есть
new_car.delete() # и оп, его нет
Присвоить значение атрибутам экземпляра модели вы можете именно так, как ожидаете, что это будет работать:
new_car.price = 110000
new_car.save()
После сохранения экземпляра в базе, вы можете посмотреть его id:
print(new_car.id)
# 1
Вроде бы все, ничего не забыл. Да тут и сложно что-то забыть, ведь это самая примитивная ОРМ!
Metadata
Release files for lion-orm 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lion_orm-0.1.0.tar.gz | 7.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lion_orm-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.3 kB
Release files / lion_orm-0.1.0.tar.gz
| Download URL | lion_orm-0.1.0.tar.gz |
|---|---|
| Size | 7.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7141dc98e0c362102c9521ffe25c5ad7d37f1c05926f616f48a9d098e42132ff
|
|
BLAKE2b-256 checksum How to use checksums |
7b56f29854a9c3d0825fc516b76cf700838447b26917cdfe7d6af9b09f4517a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.3
|
Release files / lion_orm-0.1.0-py3-none-any.whl
| Download URL | lion_orm-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fee4a35374c9556db148abd4fd7cb4f4eca1efb3ea9e62088eae337e03501777
|
|
BLAKE2b-256 checksum How to use checksums |
b6ba02d8b8ff9dbda7277fe849b6ca5b048e1015048364b25b58b505784963dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.3
|