Supabase Python

王林
王林asal
2024-08-31 06:04:36770semak imbas

Supabase Python

Memandangkan komuniti Supabase telah berkembang, begitu juga permintaan untuk koleksi perpustakaan pelanggan yang pelbagai dan SDK khusus rangka kerja. Permintaan ini sebahagian besarnya telah dilayan oleh komuniti sumber terbuka itu sendiri, yang pada masa ini mengekalkan berpuluh-puluh perpustakaan.

⚡️ Lagi pada Minggu Pelancaran

Apabila orang membuat permintaan kepada perkhidmatan Supabase yang dihoskan, kami dapat membina gambaran yang baik tentang sejauh mana sesetengah perpustakaan ini digunakan, dan apabila perpustakaan tertentu mencapai penerimaan luas, masuk akal untuk kami menambah sokongan rasmi untuk ia. Contoh perpustakaan yang telah membuat lonjakan daripada komuniti yang disokong kepada disokong secara rasmi termasuk supabase-flutter dan supabase-swift.

Selalu ada sokongan komuniti yang luar biasa untuk perpustakaan pelanggan Python, sepanjang setengah tahun lalu namun kami telah melihat lonjakan besar dalam penerimaan. Ini telah didorong oleh penggunaan meluas Supabase dalam komuniti AI dan ML, yang kebanyakannya adalah Pythonista yang berminat.

Jadi hari ini, kami mengumumkan bahawa Perpustakaan Pelanggan Python berikut kini disokong secara rasmi pada platform Supabase:

  • supabase-py
  • auth-py
  • penyimpanan-py
  • fungsi-py
  • py masa nyata

supabase-py pada asalnya dimulakan oleh penyelenggara lqmanh pada September 2020, dan tidak lama selepas itu disertai oleh fedden dan J0 (yang kemudiannya menjadi ahli sepenuh masa Pasukan Supabase). Dalam beberapa tahun kebelakangan ini, pembangunan telah didorong oleh kerja senyap dan juancarlospaco yang kedua-duanya memainkan peranan penting dalam usaha mencapai pariti ciri dengan supabase-js.

Terima kasih banyak kepada semua orang yang telah menyumbang kepada lib pelanggan setakat ini dan semoga kita akan melihat lebih banyak lib komuniti membuat dorongan untuk sokongan rasmi pada masa hadapan.

Di bawah ialah gambaran keseluruhan beberapa ciri terbaharu yang ditambahkan pada koleksi lib Python.

Didayakan HTTP2 secara lalai

Pelanggan Supabase akan menggunakan HTTP 2.0 secara automatik apabila tersedia secara lalai, menawarkan peningkatan prestasi yang lancar kepada aplikasi sedia ada anda.

Peningkatan ini dilaksanakan dengan cara yang benar-benar telus dan tidak memerlukan perubahan pada kod sedia ada anda, sambil berpotensi memberikan pengurangan kependaman yang ketara dan peningkatan prestasi.

Lihat juga:

  • 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

Ikut ubah hala secara lalai

Klien Supabase kini secara automatik mengikut semua ubah hala HTTP secara lalai, sejajar dengan gelagat klien Supabase dalam bahasa pengaturcaraan lain.

Peningkatan ini meningkatkan ketekalan merentas ekosistem dan memudahkan pengendalian ubah hala, mengurangkan keperluan untuk campur tangan manual dalam senario biasa seperti perubahan URL atau pengimbangan beban.

Lihat juga:

  • 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 didayakan secara lalai

Klien Supabase kini secara automatik menyertakan pengepala HTTP kekal hidup secara lalai, yang kadangkala tiada, menangani ketidakkonsistenan ini dalam versi terdahulu.

Peningkatan ini mengoptimumkan pengurusan sambungan, berpotensi mengurangkan kependaman dan meningkatkan prestasi dengan mengekalkan sambungan berterusan dengan pelayan, terutamanya bermanfaat untuk aplikasi yang membuat panggilan API yang sangat kerap.

Kawasan Fungsi Tepi

Tambahan sokongan untuk menentukan rantau yang fungsi tepi akan dijalankan (rantau pada asasnya ialah lokasi fizikal di dunia).

Lihat juga:

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

V2 masa nyata

Masa nyata telah ditingkatkan kepada versi 2.0 dengan banyak penambahbaikan dan pembetulan, termasuk contoh yang dikemas kini dan ciri berkaitan Kehadiran baharu (siaran, langgan, trek, dll).

Lihat juga:

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

Penambahbaikan pengesahan

Log masuk tanpa nama telah ditambahkan pada klien Auth, termasuk sifat boolean is_anonymous baharu yang telah ditambahkan pada kelas Pengguna, juga kaedah sign_in_with_id_token() dan sign_in_with_sso() telah ditambahkan pada Auth Client, antara banyak kaedah lain pembetulan pepijat.

Lihat juga:

  • 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

Petikan/melarikan diri selepas postgrest dalam pertanyaan

Supabase meningkatkan keselamatan pertanyaan PostgreSQL dengan melaksanakan sanitize_param() untuk sanitasi parameter dalam pertanyaan SQL dalaman pada sisi klien, memastikan pengendalian data dan pelaksanaan pertanyaan yang lebih selamat merentas semua operasi.

Berjalan dengan SSL yang tidak disahkan

Sesetengah pengguna perlu menjalankan klien Supabase dengan SSL yang tidak sah atau tidak disahkan atas apa jua sebab (penyahpepijat SSL/pengesan/profiler/dll dalam persekitaran pembangunan), hujah boolean pilihan baharu telah ditambahkan pada pembina pelanggan, kemudian lulus pengesahan =False membolehkannya berjalan dengan SSL yang tidak disahkan tanpa amaran.

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"

Lihat juga:

  • 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

Tutup soket dalam Masa Nyata

Pustaka Supabase Realtime kini termasuk kaedah close() baharu untuk menutup sambungan soket.

Tambahan ini memberikan pembangun kawalan yang lebih baik ke atas kitaran hayat sambungan, membenarkan penutupan eksplisit sambungan soket apabila diperlukan.

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

Lihat juga:

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

tamat masa Fungsi Edge

Tamamasa untuk Fungsi Tepi kini ditetapkan dan fungsi yang berjalan lama selesai dengan betul, tiada lagi tamat masa dalaman pihak pelanggan perpustakaan yang memotong fungsi tersebut.

Pengguna kini boleh melaksanakan operasi yang lebih kompleks dengan yakin dalam Fungsi Edge.

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

Lihat juga:

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

Alat baharu Vec2pg untuk memindahkan data ke Supabase

Alat CLI baharu yang ringkas dan boleh diperluaskan untuk memindahkan data vektor daripada perkhidmatan lain dan SASS ke Supabase telah dicipta, ia boleh memindahkan data vektor daripada Pinecone dan Qdrant ke Supabase dengan satu arahan, memperkemas aliran kerja dan meningkatkan kemudahalihan data merentas AI dan ML projek.

Anda boleh mengundi penyedia pangkalan data vektor lain untuk ditambahkan pada masa hadapan!

Lihat juga:

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

CI dikemas kini

Binaan Integrasi Berterusan untuk semua perpustakaan telah dinaik taraf dan dibuat lebih ketat (linters, dll).

Lihat juga:

  • 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

Macam-macam

  • Liputan unittest telah dipertingkatkan merentas semua repositori kod.
  • Kerumitan cyclomatic telah dianalisis dan dipertingkatkan dalam semua perpustakaan (mccabe, prospector).
  • Berbilang pembetulan untuk gaya kod, penamaan simbol, dokumentasi, ulasan dan rentetan dokumen.

Menyumbang

Jika anda ingin terlibat dalam menyumbang kepada perpustakaan pelanggan Python kami, lihat di sini untuk mendapatkan beberapa maklumat tentang cara menyumbang dan semak senarai isu terbuka untuk mendapatkan inspirasi tentang perkara yang perlu diusahakan.

Bermula

Dokumentasi penuh tersedia untuk perpustakaan Klien Supabase Python di tapak Supabase Docs.

Atas ialah kandungan terperinci Supabase Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn