Heim  >  Artikel  >  Backend-Entwicklung  >  Supabase Python

Supabase Python

王林
王林Original
2024-08-31 06:04:36626Durchsuche

Supabase Python

Da die Supabase-Community gewachsen ist, ist auch die Nachfrage nach einer vielfältigen Sammlung von Client-Bibliotheken und Framework-spezifischen SDKs gewachsen. Dieser Bedarf wird größtenteils von der Open-Source-Community selbst bedient, die derzeit Dutzende Bibliotheken unterhält.

⚡️ Mehr zur Einführungswoche

Wenn Leute Anfragen an den gehosteten Supabase-Dienst stellen, können wir uns ein gutes Bild davon machen, wie weit verbreitet einige dieser Bibliotheken genutzt werden, und wenn eine bestimmte Bibliothek eine breite Akzeptanz erreicht, ist es für uns sinnvoll, offizielle Unterstützung hinzuzufügen Es. Beispiele für Bibliotheken, die den Sprung von der Community-Unterstützung zur offiziell unterstützten Bibliothek geschafft haben, sind supabase-flutter und supabase-swift.

Es gab immer eine unglaubliche Community-Unterstützung für die Python-Client-Bibliotheken, in den letzten anderthalb Jahren konnten wir jedoch einen enormen Anstieg der Akzeptanz verzeichnen. Dies wurde durch die breite Akzeptanz von Supabase in der KI- und ML-Community vorangetrieben, von denen viele begeisterte Pythonisten sind.

Deshalb geben wir heute bekannt, dass die folgenden Python-Clientbibliotheken jetzt offiziell auf der Supabase-Plattform unterstützt werden:

  • supabase-py
  • auth-py
  • storage-py
  • functions-py
  • realtime-py

supabase-py wurde ursprünglich im September 2020 vom Betreuer lqmanh gestartet und kurz darauf von Fedden und J0 (der später ein Vollzeitmitglied des Supabase-Teams wurde) hinzugefügt. In den letzten Jahren wurde die Entwicklung von Silentworks und Juancarlospaco vorangetrieben, die beide maßgeblich dazu beigetragen haben, Feature-Parität mit Supabase-js zu erreichen.

Vielen Dank an alle, die bisher zu den Client-Bibliotheken beigetragen haben, und hoffentlich sehen wir in Zukunft weitere Community-Bibliotheken, die sich für offizielle Unterstützung einsetzen.

Nachfolgend finden Sie eine Übersicht über einige kürzlich zur Sammlung von Python-Bibliotheken hinzugefügte Funktionen.

HTTP2 standardmäßig aktiviert

Supabase-Clients verwenden automatisch HTTP 2.0, sofern standardmäßig verfügbar, und bieten so eine nahtlose Leistungssteigerung für Ihre vorhandenen Anwendungen.

Diese Verbesserung wird auf völlig transparente Weise implementiert und erfordert keine Änderungen an Ihrem vorhandenen Code, während sie möglicherweise zu einer erheblichen Latenzreduzierung und Leistungsverbesserungen führt.

Siehe auch:

  • 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

Folgen Sie Weiterleitungen standardmäßig

Supabase-Clients folgen jetzt standardmäßig automatisch allen HTTP-Weiterleitungen und passen sich damit dem Verhalten von Supabase-Clients in anderen Programmiersprachen an.

Diese Verbesserung verbessert die Konsistenz im gesamten Ökosystem und vereinfacht die Handhabung von Weiterleitungen, wodurch die Notwendigkeit manueller Eingriffe in häufigen Szenarien wie URL-Änderungen oder Lastausgleich verringert wird.

Siehe auch:

  • 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

Keep-Alive ist standardmäßig aktiviert

Supabase-Clients enthalten jetzt standardmäßig automatisch einen Keep-Alive-HTTP-Header, der manchmal fehlte, um diese Inkonsistenz in früheren Versionen zu beheben.

Diese Verbesserung optimiert die Verbindungsverwaltung, reduziert möglicherweise die Latenz und verbessert die Leistung durch die Aufrechterhaltung dauerhafter Verbindungen mit dem Server, was besonders für Anwendungen von Vorteil ist, die sehr häufige API-Aufrufe durchführen.

Kantenfunktionsbereiche

Unterstützung für die Angabe der Region hinzugefügt, in der die Kantenfunktion ausgeführt wird (eine Region ist im Grunde ein physischer Ort auf der Welt).

Siehe auch:

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

Echtzeit V2

Realtime wurde mit vielen Verbesserungen und Korrekturen auf Version 2.0 aktualisiert, einschließlich aktualisierter Beispiele und der neuen Presence-bezogenen Funktionen (Broadcast, Abonnement, Track usw.).

Siehe auch:

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

Authentifizierungsverbesserungen

Anonyme Anmeldungen wurden dem Auth-Client hinzugefügt, einschließlich einer neuen booleschen Eigenschaft is_anonymous, die der Klasse „Benutzer“ hinzugefügt wurde. Außerdem wurden dem Auth-Client unter anderem die Methoden sign_in_with_id_token() und sign_in_with_sso() hinzugefügt Fehlerbehebungen.

Siehe auch:

  • 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

Postgrest-Zitat/Escape in Abfragen

Supabase verbesserte die PostgreSQL-Abfragesicherheit durch die Implementierung von sanitize_param() zur Parameterbereinigung in internen SQL-Abfragen auf der Clientseite und sorgt so für eine sicherere Datenverarbeitung und Abfrageausführung bei allen Vorgängen.

Läuft mit nicht verifiziertem SSL

Einige Benutzer müssen die Supabase-Clients aus irgendeinem Grund mit ungültigem oder nicht verifiziertem SSL ausführen (SSL-Debugger/Tracer/Profiler/usw. in Entwicklungsumgebungen). Den Konstruktoren der Clients wurde ein neues optionales boolesches Argument hinzugefügt, das dann die Überprüfung besteht =False ermöglicht die Ausführung mit nicht verifiziertem SSL ohne Warnungen.

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"

Siehe auch:

  • 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

Socket in Echtzeit schließen

Die Supabase Realtime-Bibliothek enthält jetzt eine neue close()-Methode zum Schließen der Socket-Verbindungen.

Diese Ergänzung bietet Entwicklern eine genauere Kontrolle über den Verbindungslebenszyklus und ermöglicht das explizite Schließen der Socket-Verbindungen bei Bedarf.

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()

Siehe auch:

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

Zeitüberschreitungen bei Edge-Funktionen

Timeouts für Edge-Funktionen sind jetzt behoben und lang laufende Funktionen werden korrekt beendet. Es gibt kein internes Timeout auf der Clientseite der Bibliothek mehr, das die Funktionen unterbricht.

Benutzer können jetzt komplexere Vorgänge sicher in Edge Functions implementieren.

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"))

Siehe auch:

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

Neues Tool Vec2pg zur Datenmigration nach Supabase

Es wurde ein neues einfaches und erweiterbares CLI-Tool zum Migrieren von Vektordaten von anderen Diensten und SASS in Supabase erstellt. Es kann Vektordaten von Pinecone und Qdrant mit einem einzigen Befehl in Supabase migrieren, wodurch Arbeitsabläufe rationalisiert und die Datenportabilität zwischen KI und ML verbessert werden Projekte.

Sie können für weitere Vektordatenbankanbieter stimmen, die in Zukunft hinzugefügt werden!

Siehe auch:

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

CI aktualisiert

Continuous-Integration-Builds für alle Bibliotheken wurden aktualisiert und strenger gestaltet (Linters usw.).

Siehe auch:

  • 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

Verschiedenes

  • Unittests-Abdeckung wurde in allen Code-Repositories verbessert.
  • Die zyklomatische Komplexität wurde in allen Bibliotheken (mccabe, prospektor) analysiert und verbessert.
  • Mehrere Korrekturen für Codestil, Symbolbenennung, Dokumentation, Kommentare und Dokumentzeichenfolgen.

Mitwirken

Wenn Sie einen Beitrag zu unseren Python-Client-Bibliotheken leisten möchten, finden Sie hier einige Informationen dazu, wie Sie einen Beitrag leisten können. Sehen Sie sich auch die Liste der offenen Probleme an, um Inspiration für die Arbeit zu erhalten.

Erste Schritte

Eine vollständige Dokumentation für die Supabase Python Client-Bibliotheken ist auf der Supabase Docs-Website verfügbar.

Das obige ist der detaillierte Inhalt vonSupabase Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn