"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Supabase Python

Supabase Python

Publicado el 2024-10-31
Navegar:873

Supabase Python

A medida que la comunidad de Supabase ha crecido, también lo ha hecho la demanda de una colección diversa de bibliotecas cliente y SDK específicos del marco. Esta demanda ha sido atendida en su mayor parte por la propia comunidad de código abierto, que actualmente mantiene docenas de bibliotecas.

⚡️ Más sobre la semana de lanzamiento

Cuando la gente realiza solicitudes al servicio alojado de Supabase, podemos crear una buena imagen de cuán ampliamente se utilizan algunas de estas bibliotecas, y cuando una biblioteca en particular logra una adopción amplia, tiene sentido para nosotros agregar soporte oficial para él. Ejemplos de bibliotecas que han dado el salto del soporte comunitario al soporte oficial incluyen supabase-flutter y supabase-swift.

Siempre ha habido un increíble apoyo de la comunidad para las bibliotecas cliente de Python; sin embargo, durante el último año y medio hemos visto un gran aumento en la adopción. Esto ha sido impulsado por la amplia adopción de Supabase en la comunidad de IA y ML, muchos de los cuales son entusiastas Pythonistas.

Hoy anunciamos que las siguientes bibliotecas cliente de Python ahora son oficialmente compatibles con la plataforma Supabase:

  • supabase-py
  • autenticación
  • almacenamiento-py
  • funciones-py
  • py en tiempo real

supabase-py fue iniciado originalmente por el mantenedor lqmanh en septiembre de 2020, y poco después se unieron a Fedden y J0 (quienes se convirtieron en miembros de tiempo completo del equipo Supabase). En los últimos años, el desarrollo ha sido impulsado por silentworks y juancarlospaco, quienes han desempeñado un papel decisivo en el intento de alcanzar la paridad de funciones con supabase-js.

Muchas gracias a todos los que han contribuido a las bibliotecas cliente hasta ahora y, con suerte, veremos más bibliotecas comunitarias impulsando el soporte oficial en el futuro.

A continuación se muestra una descripción general de algunas características recientes agregadas a la colección de bibliotecas de Python.

HTTP2 habilitado de forma predeterminada

Los clientes de Supabase utilizarán automáticamente HTTP 2.0 cuando esté disponible de forma predeterminada, lo que ofrecerá un aumento perfecto del rendimiento de sus aplicaciones existentes.

Esta mejora se implementa de una manera completamente transparente y no requiere cambios en el código existente, al tiempo que ofrece potencialmente una reducción significativa de la latencia y mejoras de rendimiento.

Ver también:

  • https://github.com/supabase/functions-py/pull/115
  • https://github.com/supabase/auth-py/pull/534
  • https://github.com/supabase/postgrest-py/pull/462
  • https://github.com/supabase/storage-py/pull/271

Seguir redirecciones por defecto

Los clientes de Supabase ahora siguen automáticamente todas las redirecciones HTTP de forma predeterminada, alineándose con el comportamiento de los clientes de Supabase en otros lenguajes de programación.

Esta mejora mejora la coherencia en todo el ecosistema y simplifica el manejo de redirecciones, lo que reduce la necesidad de intervención manual en escenarios comunes como cambios de URL o equilibrio de carga.

Ver también:

  • https://github.com/supabase/postgrest-py/pull/449
  • https://github.com/supabase/functions-py/pull/107
  • https://github.com/supabase/storage-py/pull/257
  • https://github.com/supabase/auth-py/pull/511

Mantener vivo habilitado de forma predeterminada

Los clientes de Supabase ahora incluyen automáticamente un encabezado HTTP de mantenimiento de conexión de forma predeterminada, que a veces faltaba, solucionando esta inconsistencia en versiones anteriores.

Esta mejora optimiza la administración de conexiones, reduciendo potencialmente la latencia y mejorando el rendimiento al mantener conexiones persistentes con el servidor, lo que es especialmente beneficioso para aplicaciones que realizan llamadas API muy frecuentes.

Regiones de funciones perimetrales

Se agregó soporte para especificar la región en la que se ejecutará la función perimetral (una región es básicamente una ubicación física en el mundo).

Ver también:

  • https://github.com/supabase/functions-py/pull/126

V2 en tiempo real

Realtime se ha actualizado a la versión 2.0 con muchas mejoras y correcciones, incluidos ejemplos actualizados y nuevas funciones relacionadas con Presencia (transmitir, suscribirse, realizar seguimiento, etc.).

Ver también:

  • https://github.com/supabase/realtime-py/pull/139
  • https://github.com/supabase/realtime-py/pull/178

Mejoras de autenticación

Se agregaron inicios de sesión anónimos al cliente de autenticación, incluida una nueva propiedad booleana is_anonymous que se agregó a la clase Usuario, también se agregaron los métodos sign_in_with_id_token() y sign_in_with_sso() al cliente de autenticación, entre muchos otros correcciones de errores.

Ver también:

  • https://github.com/supabase/auth-py/pull/528
  • https://github.com/supabase/auth-py/pull/548
  • https://github.com/supabase/auth-py/pull/553
  • https://github.com/supabase/auth-py/pull/506

Cita/escapado postgrest en consultas

Supabase mejoró la seguridad de las consultas PostgreSQL al implementar sanitize_param() para la desinfección de parámetros en consultas SQL internas en el lado del cliente, lo que garantiza un manejo de datos y una ejecución de consultas más seguros en todas las operaciones.

Ejecutando con SSL no verificado

Algunos usuarios necesitan ejecutar los clientes de Supabase con SSL no válido o no verificado por cualquier motivo (depuradores/trazadores/perfiles/etc. de SSL en entornos de desarrollo), se agregó un nuevo argumento booleano opcional a los constructores de los clientes, luego se pasó verificar =False permite ejecutarlo con SSL no verificado sin advertencias.

from postgrest import SyncPostgrestClient

url: str = "https://example.com"
h: dict = {"Custom-Header": "value"}

with SyncPostgrestClient(url, schema="pub", headers=h, verify = False) as client:
    session = client.session
    assert session.base_url == "https://example.com"

Ver también:

  • https://github.com/supabase/functions-py/pull/106
  • https://github.com/supabase/storage-py/pull/256
  • https://github.com/supabase/auth-py/pull/506
  • https://github.com/supabase/postgrest-py/pull/448
  • https://github.com/supabase/supabase-py/pull/813

Cerrar socket en tiempo real

La biblioteca Supabase Realtime ahora incluye un nuevo método close() para cerrar las conexiones de socket.

Esta adición proporciona a los desarrolladores un control más preciso sobre el ciclo de vida de la conexión, lo que permite el cierre explícito de las conexiones del socket cuando sea necesario.

import os
from realtime import AsyncRealtimeClient

def callback1(payload):
    print("Callback 1: ", payload)

SUPABASE_ID: str = os.environ.get("SUPABASE_ID")
API_KEY: str = os.environ.get("SUPABASE_KEY")

URL: str = f"wss://{SUPABASE_ID}.supabase.co/realtime/v1/websocket"

client = AsyncRealtimeClient(URL, API_KEY)
await client.connect()

channel_1 = s.channel("realtime:public:sample")
channel_1.subscribe().on_postgres_changes("INSERT", callback1)

await client.listen()
await client.close()

Ver también:

  • https://github.com/supabase-community/realtime-py/pull/142

Tiempos de espera de funciones perimetrales

Los tiempos de espera para las funciones perimetrales ahora son fijos y las funciones de ejecución prolongada finalizan correctamente; ya no hay un tiempo de espera interno del lado del cliente de la biblioteca que interrumpe las funciones.

Los usuarios ahora pueden implementar con confianza operaciones más complejas en Edge Functions.

import os
from supabase import create_client
from supabase.lib.client_options import ClientOptions

url: str = os.environ.get("SUPABASE_URL")
key: str = os.environ.get("SUPABASE_KEY")

options = ClientOptions(function_client_timeout = 15)
client = create_client(url, key, options)

client.functions.url = "http://127.0.0.1:54321/functions/v1/hello-world"
print(client.functions.invoke("hello"))

Ver también:

  • https://github.com/supabase/functions-py/pull/120
  • https://github.com/supabase/supabase-py/pull/846

Nueva herramienta Vec2pg para migrar datos a Supabase

Se creó una nueva herramienta CLI simple y extensible para migrar datos vectoriales de otros servicios y SASS a Supabase. Puede migrar datos vectoriales de Pinecone y Qdrant a Supabase con un solo comando, agilizando los flujos de trabajo y mejorando la portabilidad de los datos en AI y ML. proyectos.

¡Puedes votar para que se agreguen otros proveedores de bases de datos vectoriales en el futuro!

Ver también:

  • https://github.com/supabase-community/vec2pg
  • https://github.com/supabase-community/vec2pg/pull/5
  • https://github.com/supabase-community/vec2pg/issues/6

CI actualizado

Las compilaciones de integración continua para todas las bibliotecas se han actualizado y se han hecho más estrictas (linters, etc.).

Ver también:

  • https://github.com/supabase/supabase-py/pull/772
  • https://github.com/supabase/supabase-py/pull/774
  • https://github.com/supabase/functions-py/pull/93
  • https://github.com/supabase/functions-py/pull/92
  • https://github.com/supabase/storage-py/pull/240
  • https://github.com/supabase/storage-py/pull/237
  • https://github.com/supabase/realtime-py/pull/132
  • https://github.com/supabase/realtime-py/pull/131
  • https://github.com/supabase/postgrest-py/pull/424
  • https://github.com/supabase/postgrest-py/pull/422
  • https://github.com/supabase/functions-py/pull/139
  • https://github.com/supabase/storage-py/pull/287
  • https://github.com/supabase/auth-py/pull/572
  • https://github.com/supabase/postgrest-py/pull/484
  • https://github.com/supabase/supabase-py/pull/887
  • https://github.com/supabase/realtime-py/pull/182

Misceláneas

  • Se mejoró la cobertura de Unittests en todos los repositorios de código.
  • La complejidad ciclomática ha sido analizada y mejorada en todas las bibliotecas (mccabe, prospector).
  • Múltiples correcciones para el estilo del código, la denominación de símbolos, la documentación, los comentarios y las cadenas de documentación.

Contribuyendo

Si desea participar y contribuir a nuestras bibliotecas cliente de Python, consulte aquí para obtener información sobre cómo contribuir y consulte la lista de problemas abiertos para obtener inspiración sobre en qué trabajar.

Empezando

La documentación completa está disponible para las bibliotecas del cliente Supabase Python en el sitio Supabase Docs.

Declaración de liberación Este artículo se reproduce en: https://dev.to/supabase/supabase-python-50j?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3