Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ar4ikov/sqlextendedobjects
Утилиты и классы для облегченной и удобной работы с SQlite таблицами и SQL в целом.
https://github.com/ar4ikov/sqlextendedobjects
database db oop opensource pytnon sql sqlite sqlite3 tables
Last synced: 20 days ago
JSON representation
Утилиты и классы для облегченной и удобной работы с SQlite таблицами и SQL в целом.
- Host: GitHub
- URL: https://github.com/ar4ikov/sqlextendedobjects
- Owner: Ar4ikov
- Created: 2019-03-03T08:32:28.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-03-02T18:26:20.000Z (over 4 years ago)
- Last Synced: 2024-10-14T16:21:00.061Z (about 1 month ago)
- Topics: database, db, oop, opensource, pytnon, sql, sqlite, sqlite3, tables
- Language: Python
- Homepage:
- Size: 8.79 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SQL Extended Objects
- Q: А зачем?
- A: А затем. Вместо обычного получения списка-матрицы с рядами в таблице, можно
получить классы и обращаться к атрибутам класса, как к колонкам в таблице SQL.
---
- Q: Полезно ли?
- A: Да, полезно и удобно.
---
- Q: А что по багам? Тесты хоть есть?
- A: Да, и юнит, и даже интеграционные (в мыслях у разраба).
---### Установка
```console
root@Ar4ikov:~$ pip install SQLExtendedObjects
```### Коротко о функционале
- Создание класса, который будет отвечать за ряд в таблице.
```pythonfrom sql_extended_objects import ExtObject
class User(ExtObject):
def __init__(self, **data):
super().__init__(**data)
def my_method(self):
pass
def other_method(self):
pass
```- Подключение к SQLite3 БД и получение из таблицы
```python
from sql_extended_objects import ExtRequestsdatabase = ExtRequests("database.db")
users = database.select_all("my_table", User, where="`id` = 1")
if users:
user = users[0]# Обращение к атрибутам класса
# Таблица вида:
# -------------------
# id | first_name | last_name | age | nicknameprint(user.first_name)
# Out: "Nikita"print(user.last_name)
# Out: "Archikov"print(user.id)
# Out: 1print(user.pk) # -> PRIMARY KEY нашей таблицы. Если нет - "id"
# Out: "id"# Изменеие атрибута и автоматическая синхронизация с таблицей
user["age"] = 17# Удаление класса и удаление ряда из таблицы
user.remove()# Очистка атрибутов в экземляре
user.reset()# Сравнение экземпляров по PRIMARY KEY
print(user == user)
# Out: Trueprint(user <= user)
# Out: Trueprint(user > user)
# Out: False```
- Стандартные SQL-запросы
```python
from sql_extended_objects import ExtRequestsdatabase = ExtRequests("database.db")
database.execute("""SELECT * FROM `my_table` WHERE `id` = 1;""")
# Запрос с авто-коммитом
database.commit("""UPDATE `my_table` SET `age` = 17 WHERE `id` = 1;""")```
- Парочка встроенных методов для помощи в поиске из классов
```python
from sql_extended_objects import ExtRequests, ExtObjectclass User(ExtObject):
def __init__(self, **data):
super().__init__(**data)
def my_method(self):
pass
def other_method(self):
pass
database = ExtRequests("database.db")
# Получение класса из списка
users = database.select_all("my_table", User)
this_user = database.utils.get(users, id=1)# Обновление атрибутов у всех классов
users = database.utils.update_all(users, age=17)# Удаление всех классов из списка и из таблицы
database.utils.remove_all(users)```
Ну, собственно, всё. Если у вас есть какие-то пожелания - смело прошу в `Pull-Requests` писать.