Initial commit

This commit is contained in:
Тимур Абайдулин
2025-11-26 07:18:11 +03:00
commit a23c88f5b9
10 changed files with 904 additions and 0 deletions

240
example.py Normal file
View File

@@ -0,0 +1,240 @@
"""
Примеры использования SupabaseManager
"""
from supabase import SupabaseManager
def example_select():
"""Пример выборки данных из таблицы"""
print("\n=== Пример SELECT ===")
sb = SupabaseManager()
# Получить все записи
all_users = sb.select(table="users")
print(f"Всего пользователей: {len(all_users)}")
# Получить с фильтром
filtered_users = sb.select(
table="users",
filters={"age": 30}
)
print(f"Пользователей с возрастом 30: {len(filtered_users)}")
# Получить с лимитом
limited_users = sb.select(
table="users",
limit=5
)
print(f"Первые 5 пользователей: {len(limited_users)}")
# Выбрать только определенные колонки
names_only = sb.select(
table="users",
columns="id, name"
)
for user in names_only:
print(f" - {user.get('name')} (ID: {user.get('id')})")
def example_insert():
"""Пример добавления новой записи"""
print("\n=== Пример INSERT ===")
sb = SupabaseManager()
new_user = {
"name": "Тимур Иванов",
"email": f"timur_{hash('test')}@example.com",
"age": 28
}
result = sb.insert(table="users", data=new_user)
if result:
print(f"Создан пользователь: {result.get('name')} с ID {result.get('id')}")
else:
print("Ошибка при создании пользователя")
def example_update():
"""Пример обновления записи"""
print("\n=== Пример UPDATE ===")
sb = SupabaseManager()
# Сначала получим ID первого пользователя
users = sb.select(table="users", limit=1)
if users:
user_id = users[0].get('id')
# Обновим возраст
updated = sb.update(
table="users",
data={"age": 31},
filters={"id": user_id}
)
if updated:
print(f"Обновлен пользователь ID {user_id}: {updated[0]}")
else:
print("Нет пользователей для обновления")
def example_delete():
"""Пример удаления записи"""
print("\n=== Пример DELETE ===")
sb = SupabaseManager()
# Получим последнюю запись
users = sb.select(table="users")
if users:
last_user = users[-1]
user_id = last_user.get('id')
print(f"Удаляем пользователя: {last_user.get('name')} (ID: {user_id})")
deleted = sb.delete(
table="users",
filters={"id": user_id}
)
if deleted:
print(f"✅ Пользователь удален")
else:
print("Нет пользователей для удаления")
def example_complex_query():
"""Пример работы с прямым клиентом Supabase для сложных запросов"""
print("\n=== Пример сложных запросов ===")
sb = SupabaseManager()
client = sb.get_client()
# Использование операторов сравнения
adults = client.table("users")\
.select("*")\
.gte("age", 18)\
.execute()
print(f"Взрослых пользователей (18+): {len(adults.data)}")
# Поиск по паттерну (LIKE)
ivan_users = client.table("users")\
.select("*")\
.ilike("name", "%иван%")\
.execute()
print(f"Пользователей с 'иван' в имени: {len(ivan_users.data)}")
# Сортировка
sorted_users = client.table("users")\
.select("*")\
.order("age", desc=True)\
.limit(3)\
.execute()
print("Топ-3 самых старших пользователей:")
for user in sorted_users.data:
print(f" - {user.get('name')}, {user.get('age')} лет")
def example_storage():
"""Пример работы с Storage (загрузка файлов)"""
print("\n=== Пример работы с Storage ===")
sb = SupabaseManager()
# Создадим тестовый текстовый файл
test_content = "Это тестовый файл для демонстрации работы с Supabase Storage"
file_data = test_content.encode('utf-8')
# Загрузим файл
success = sb.upload_file(
bucket="test-bucket",
file_path="examples/test.txt",
file_data=file_data,
content_type="text/plain"
)
if success:
# Получим публичный URL
url = sb.get_public_url(
bucket="test-bucket",
file_path="examples/test.txt"
)
print(f"Файл доступен по URL: {url}")
else:
print("Ошибка при загрузке файла (проверьте, существует ли bucket 'test-bucket')")
def example_batch_operations():
"""Пример пакетных операций"""
print("\n=== Пример пакетных операций ===")
sb = SupabaseManager()
# Добавим несколько пользователей
users_to_add = [
{"name": "Алексей Петров", "email": f"alex_{i}@example.com", "age": 25 + i}
for i in range(3)
]
print(f"Добавляем {len(users_to_add)} пользователей...")
for user_data in users_to_add:
result = sb.insert(table="users", data=user_data)
if result:
print(f"{result.get('name')}")
def example_error_handling():
"""Пример обработки ошибок"""
print("\n=== Пример обработки ошибок ===")
try:
sb = SupabaseManager()
# Попытка запроса к несуществующей таблице
result = sb.select(table="nonexistent_table")
if not result:
print("⚠️ Таблица не существует или запрос вернул пустой результат")
except Exception as e:
print(f"❌ Произошла ошибка: {e}")
def main():
"""Запуск всех примеров"""
print("=" * 60)
print("Примеры использования SupabaseManager")
print("=" * 60)
try:
# Раскомментируйте нужные примеры
example_select()
# example_insert()
# example_update()
# example_delete()
# example_complex_query()
# example_storage()
# example_batch_operations()
# example_error_handling()
except ValueError as e:
print(f"\n❌ Ошибка инициализации: {e}")
print("\n💡 Убедитесь, что вы создали файл .env с переменными:")
print(" SUPABASE_URL=your_url")
print(" SUPABASE_KEY=your_key")
except Exception as e:
print(f"\n❌ Непредвиденная ошибка: {e}")
if __name__ == "__main__":
main()