Initial commit
This commit is contained in:
240
example.py
Normal file
240
example.py
Normal 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()
|
||||
Reference in New Issue
Block a user