”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 超级数据库Python

超级数据库Python

发布于2024-10-31
浏览:281

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 客户端现在默认自动包含一个有时会丢失的保持活动 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 客户端库的完整文档。

版本声明 本文转载于:https://dev.to/supabase/supabase-python-50j?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用 Selenium 在 Google Chrome 中模拟 Microsoft Edge Mobile?
    如何使用 Selenium 在 Google Chrome 中模拟 Microsoft Edge Mobile?
    使用 Selenium 更改 Google Chrome 中的用户代理在 Selenium 自动化脚本中,为浏览器窗口设置特定的用户代理对于模拟设备行为和确保网站渲染至关重要正如预期的那样。在这种情况下,我们的目标是将 Google Chrome 中的用户代理修改为 Microsoft Edge M...
    编程 发布于2024-11-08
  • 哪种 MySQL 获取函数适合您的 PHP 应用程序:`mysql_fetch_array`、`mysql_fetch_assoc` 和 `mysql_fetch_object` 的比较
    哪种 MySQL 获取函数适合您的 PHP 应用程序:`mysql_fetch_array`、`mysql_fetch_assoc` 和 `mysql_fetch_object` 的比较
    比较 mysql_fetch_array、mysql_fetch_assoc 和 mysql_fetch_object:综合分析mysql 函数系列在从 MySQL 查询中检索结果中起着至关重要的作用在 PHP 中。在这些函数中,mysql_fetch_array、mysql_fetch_assoc...
    编程 发布于2024-11-08
  • Lerna – Monorepo 管理的关键
    Lerna – Monorepo 管理的关键
    欢迎回到莫诺雷波城堡! 现在城堡已经建成,每个房间(项目)都已就位。但如果没有正确的管理,事情可能会变得混乱。谁来帮助城堡顺利运转?这时勒纳登场了——一位强大的巫师,拥有神奇的命令,可以让一切保持秩序。 Lerna 是您在 monorepo 土地上的向导,确保所有房间(项目)同步,所有包都链接,并且...
    编程 发布于2024-11-08
  • 如何在 PHP 中循环嵌套数组并显示特定值?
    如何在 PHP 中循环嵌套数组并显示特定值?
    PHP foreach 与嵌套数组:综合指南在 PHP 中,浏览嵌套数组可能是一个常见的挑战。本讨论重点讨论特定场景,您的目标是显示嵌套数组的子集,特别是第二个嵌套数组中的值。将 foreach 与嵌套数组结合使用要使用 foreach 处理嵌套数组,可以采用以下方法:示例:$tmpArray = ...
    编程 发布于2024-11-08
  • 提升 Web 性能:前端开发人员指南
    提升 Web 性能:前端开发人员指南
    大家好!自从我上次写博客以来已经有一段时间了,我承认,这让我有点难过。现实是,有太多东西需要学习,有时感觉永远没有足够的时间来深入了解所有内容。我在跟谁开玩笑呢?事实是,我最近拖延得很厉害。 但最近,我一直在探索网络性能——这对于任何前端开发人员来说都是一个至关重要的话题——我很高兴分享我所学到的东...
    编程 发布于2024-11-08
  • 如何利用先进的加密技术增强数据保护?
    如何利用先进的加密技术增强数据保护?
    对称密钥加密:FernetPython 拥有强大的加密库,提供 Fernet,这是一种安全、最佳实践的加密方案。 Fernet 采用 AES CBC 加密、HMAC 签名以及版本和时间戳信息来保护数据。建议使用 Fernet.generate_key() 生成密钥。from cryptography...
    编程 发布于2024-11-08
  • 什么是本地主机?本地主机作为开发人员的用途
    什么是本地主机?本地主机作为开发人员的用途
    您有没有想过当开发人员在将网站上线之前测试网站时会发生什么?或者网络管理员如何检查他们的系统是否正常工作?答案在于一个强大但经常被误解的概念,称为 localhost。让我们深入了解 localhost 是什么、它为何重要以及它如何变得非常有用。 什么是本地主机? 用最简单的术语来说...
    编程 发布于2024-11-08
  • 为什么 Debian 和 Ubuntu Docker 容器之间的标准输出缓冲不同?
    为什么 Debian 和 Ubuntu Docker 容器之间的标准输出缓冲不同?
    Docker 容器中的标准输出缓冲:Debian 与 Ubuntu 的案例在 Docker 容器中执行代码时,标准输出缓冲可能会发生在在某些情况下,但在其他情况下则不然。在使用 io.MultiWriter 将 stdout 定向到控制台和日志文件的情况下会出现此问题。根本原因:平台差异根本原因造成...
    编程 发布于2024-11-08
  • 语义HTML
    语义HTML
    语义 HTML 是 HTML 的一部分,可帮助您以维护和 SEO 友好的方式组织您的网站。 SEO 代表:搜索引擎优化。 当您在构建网站时遵循 HTML 语义时,该网站往往会更容易被搜索引擎排名更高,当然也能让屏幕阅读器更轻松地浏览您的网站。 以下是一些语义 HTML 标签: 1- “标题”标...
    编程 发布于2024-11-08
  • 如何在 Golang 中合并多个映射,同时避免重复值?
    如何在 Golang 中合并多个映射,同时避免重复值?
    在 Golang 中合并映射问题:合并多个映射,保留与跨映射中的相同键关联的值。 初始方法:提供的代码尝试通过迭代每个映射来合并映射,根据匹配键将值添加到结果映射。但是,此方法不处理结果映射中的重复值。简单合并:可以通过将值附加到切片来实现修改后的合并函数来处理重复项与结果映射中的键关联。func ...
    编程 发布于2024-11-08
  • 将 ZingGrid 连接到 Supabase:在几分钟内添加后端
    将 ZingGrid 连接到 Supabase:在几分钟内添加后端
    从我在 Zing 博客上的文章中交叉发布。 Supabase 是一个开源 Firebase 替代品。他们提供多种服务,但出于本文的目的,我们将深入探讨它如何充当网格的简单后端。 初始设置 在开始配置网格之前,我们需要在 Supabase 方面执行几个步骤。 1. 账户...
    编程 发布于2024-11-08
  • 如何在水平行中创建重叠的 Flex 项目?
    如何在水平行中创建重叠的 Flex 项目?
    创建重叠的 Flex 项目创建可能超出可用宽度的水平行 Flex 项目时,通常需要让它们重叠。默认情况下,Flexbox 会缩小项目以适合容器。Flexbox 方法要实现重叠,我们可以使用以下方法: overflow: visible;}.card {width: 10em; min-width: ...
    编程 发布于2024-11-08
  • 适合初学者的 Vue.js VueJs 部分表单和事件监听器
    适合初学者的 Vue.js VueJs 部分表单和事件监听器
    为什么使用 Vue.js 作为表单? Vue.js 在创建表单方面的优势: 简单的数据绑定:Vue.js 使用 v-model 在表单输入和组件数据之间绑定数据,使同步变得容易。 反应性:模型数据的任何更改都会自动更新视图,确保用户始终看到最新的数据,而无需编写大量...
    编程 发布于2024-11-08
  • Context API 与 Redux
    Context API 与 Redux
    在 React 生态系统中,Context API 和 Redux 都是流行的状态管理工具,但它们有不同的用途并具有不同的优势。 React 中内置的 Context API 提供了一种在组件树中共享状态的方法,而无需在每个级别手动传递 props。它对于更简单的应用程序或主题管理或用户身份验证等特...
    编程 发布于2024-11-08
  • 我们如何使用临时容器创建范围管道?
    我们如何使用临时容器创建范围管道?
    使用临时容器实现范围管道要创建处理临时容器内的值的范围管道,必须合并views::cache1运算符。该运算符会缓存转换的结果,确保其可用于后续操作。考虑以下场景,其中第三方函数 f 接受类型 T 的参数并返回 T 的向量。将 f 应用于无限范围 src 的所有元素并将结果展平为单个范围的范围管道,...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3