首页  >  文章  >  后端开发  >  超级数据库Python

超级数据库Python

王林
王林原创
2024-08-31 06:04:36729浏览

Supabase Python

随着 Supabase 社区的发展,对各种客户端库和框架特定 SDK 的需求也在不断增长。这种需求大部分是由开源社区本身提供的,该社区目前维护着数十个库。

⚡️ 发布周的更多信息

当人们向托管的 Supabase 服务提出请求时,我们能够很好地了解其中一些库的使用范围,并且当特定库获得广泛采用时,我们为它添加官方支持是有意义的它。从社区支持到官方支持的飞跃的库的例子包括supabase-flutter和supabase-swift。

在过去的一年半里,Python 客户端库一直得到了令人难以置信的社区支持,但我们看到了采用率的大幅飙升。这是由 AI 和 ML 社区中 Supabase 的广泛采用推动的,其中许多人都是热衷于 Python 的人。

今天,我们宣布 Supabase 平台现已正式支持以下 Python 客户端库:

  • supabase-py
  • auth-py
  • 存储py
  • 函数-py
  • 实时py

supabase-py 最初由维护者 lqmanh 于 2020 年 9 月启动,不久后 Fedden 和 J0 加入(后来成为 Supabase 团队的全职成员)。近年来,silentworks 和 juancarlospaco 推动了开发,他们都在推动实现与 supabase-js 同等功能方面发挥了重要作用。

非常感谢迄今为止为客户端库做出贡献的所有人,希望我们将来能看到更多社区库推动官方支持。

下面是 Python 库集合中添加的一些最新功能的概述。

默认启用 HTTP2

Supabase 客户端默认情况下将自动使用 HTTP 2.0,为您现有的应用程序提供无缝的性能提升。

此改进以完全透明的方式实现,无需更改现有代码,同时可能显着减少延迟并增强性能。

另请参阅:

  • 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

默认遵循重定向

Supabase 客户端现在默认自动遵循所有 HTTP 重定向,与其他编程语言中 Supabase 客户端的行为保持一致。

此增强功能提高了整个生态系统的一致性,并简化了重定向的处理,减少了在 URL 更改或负载平衡等常见场景中手动干预的需要。

另请参阅:

  • 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

默认启用保持活动状态

Supabase 客户端现在默认自动包含一个 keep-alive HTTP 标头,该标头有时会丢失,解决了以前版本中的这种不一致问题。

此增强功能优化了连接管理,可能会减少延迟,并通过维护与服务器的持久连接来提高性能,特别有利于进行非常频繁的 API 调用的应用程序。

边缘函数区域

添加了对指定边缘函数将运行的区域的支持(区域基本上是世界上的物理位置)。

另请参阅:

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

实时V2

Realtime 已升级到 2.0 版本,进行了大量改进和修复,包括更新的示例和新的与状态相关的功能(广播、订阅、跟踪等)。

另请参阅:

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

身份验证改进

匿名登录已添加到 Auth 客户端,包括已添加到 User 类中的新 is_anonymous 布尔属性,sign_in_with_id_token() 和 sign_in_with_sso() 方法已添加到 Auth 客户端,以及许多其他方法错误修复。

另请参阅:

  • 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 在查询中引用/转义

Supabase 通过在客户端内部 SQL 查询中实现 sanitize_param() 进行参数清理,提高了 PostgreSQL 查询安全性,确保所有操作中的数据处理和查询执行更加安全。

使用未经验证的 SSL 运行

一些用户出于某种原因需要使用无效或未经验证的 SSL 来运行 Supabase 客户端(开发环境中的 SSL 调试器/跟踪器/分析器/等),一个新的可选布尔参数被添加到客户端的构造函数中,然后传递验证=False 使其能够使用未经验证的 SSL 运行而不会发出警告。

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"

另请参阅:

  • 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

实时关闭套接字

Supabase Realtime 库现在包含一个新的 close() 方法,用于关闭套接字连接。

此功能为开发人员提供了对连接生命周期的更精细控制,允许在需要时显式关闭套接字连接。

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

另请参阅:

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

边缘函数超时

边缘函数的超时现已修复,长时间运行的函数可以正确完成,不再有库客户端内部超时切断函数。

用户现在可以自信地在 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"))

另请参阅:

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

用于将数据迁移到 Supabase 的新工具 Vec2pg

创建了一个新的简单且可扩展的 CLI 工具,用于将矢量数据从其他服务和 SASS 迁移到 Supabase,它可以通过单个命令将矢量数据从 Pinecone 和 Qdrant 迁移到 Supabase,从而简化工作流程并增强跨 AI 和 ML 的数据可移植性项目。

您可以投票支持未来添加的其他矢量数据库提供商!

另请参阅:

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

更新了 CI

所有库的持续集成构建都已升级并变得更加严格(linter 等)。

另请参阅:

  • 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

各种各样的

  • 所有代码存储库的单元测试覆盖率均得到改善。
  • 所有库(mccabe、prospector)都对循环复杂度进行了分析和改进。
  • 代码风格、符号命名、文档、注释和文档字符串的多项修复。

贡献

如果您想参与为我们的 Python 客户端库做出贡献,请参阅此处以获取有关如何贡献的一些信息,并查看未决问题列表以获取有关工作内容的一些灵感。

入门

Supabase 文档站点上提供了 Supabase Python 客户端库的完整文档。

以上是超级数据库Python的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn