跳转到主要内容

Convex的Python客户端,用于反应式后端作为服务的Convex。

项目描述

Convex

Convex的官方Python客户端。

PyPI GitHub

使用查询、变更和操作从Convex后端写入和读取数据。在docs.convex.dev上开始使用。

安装

pip install convex

基本用法

>>> from convex import ConvexClient
>>> client = ConvexClient('https://example-lion-123.convex.cloud')
>>> messages = client.query("messages:list")
>>> from pprint import pprint
>>> pprint(messages)
[{'_creationTime': 1668107495676.2854,
  '_id': '2sh2c7pn6nyvkexbdsfj66vd9h5q3hg',
  'author': 'Tom',
  'body': 'Have you tried Convex?'},
 {'_creationTime': 1668107497732.2295,
  '_id': '1f053fgh2tt2fc93mw3sn2x09h5bj08',
  'author': 'Sarah',
  'body': "Yeah, it's working pretty well for me."}]
>>> client.mutation("sendMessage", dict(author="Me", body="Hello!"))

要找到您的凸后端URL,请打开您想要在相应项目中工作的部署,在Convex仪表板中点击“设置”,在那里可以找到部署URL。要了解哪些查询、突变和操作可用,请检查仪表板中的“函数”面板。

要查看从Convex函数发出的日志,请将调试模式设置为True。

>>> client.set_debug(True)

为了对函数执行提供认证,请调用set_auth()

>>> client.set_auth("token-from-authetication-flow")

加入我们Discord以获取您的疑问解答或分享您使用Convex的进展。如果您是初学者,请访问https://docs.convex.dev了解如何在Convex云中快速启动一个能够满足您所需一切的后端。

Convex类型

Convex后端函数是用JavaScript编写的,因此传递给Convex RPC函数的Python参数将被序列化,通过网络发送,并反序列化为JavaScript对象。要了解Convex支持的类型,请参阅https://docs.convex.dev/using/types

为了调用期望JavaScript类型的函数,请使用相应的Python类型或任何可以转换为它的类型。Convex返回的值将是相应的Python类型。

JavaScript类型 Python类型 示例 其他可以转换的Python类型
null None None
bigint ConvexInt64(见下文) ConvexInt64(2**60)
number floatint 3.1, 10
boolean bool TrueFalse
string str 'abc'
ArrayBuffer bytes b'abc' ArrayBuffer
Array list [1, 3.2, "abc"] tuple,collections.abc.Sequence
object dict {a: "abc"} collections.abc.Mapping

整数和浮点数

虽然Convex支持存储Int64s和Float64s,但惯用的JavaScript广泛使用(浮点数)Number类型。在Python中,float通常被认为包含intfloat类型注解通常理解为Union[int, float]

因此,Python Convex客户端将Python的floatint转换为Convex中的Float64

要指定JavaScript BigInt,请使用ConvexInt64类。返回JavaScript BigInt的函数将返回ConvexInt64实例。

Convex错误

Python客户端支持ConvexError类型来持有从您的Convex函数传播的应用程序错误。有关如何抛出ConvexError的说明,请参阅https://docs.convex.dev/functions/error-handling/application-errors

在Python客户端上,ConvexError是带有包含一些ConvexValuedata字段的异常。处理Python客户端的应用程序错误可能看起来像这样

import convex
client = convex.ConvexClient('https://happy-animal-123.convex.cloud')

try:
    client.mutation("messages:sendMessage", {body: "hi", author: "anjan"})
except convex.ConvexError as err:
    if isinstance(err.data, dict):
        if "code" in err.data and err.data["code"] == 1:
            # do something
        else:
            # do something else
    elif isinstance(err.data, str):
        print(err.data)
except Exception as err:
    # log internally

分页

分页查询是接受分页选项作为参数的查询,可以重复调用以产生额外的“页面”结果。

对于此类分页查询

import { query } from "./_generated/server";

export default query(async ({ db }, { paginationOpts }) => {
  return await db.query("messages").order("desc").paginate(paginationOpts);
});

在Python中以每次返回5个结果的方式返回所有结果如下所示

import convex
client = convex.ConvexClient('https://happy-animal-123.convex.cloud')

done = False
cursor = None
data = []

while not done:
    result = client.query('listMessages', {"paginationOpts": {"numItems": 5, "cursor": cursor}})
    cursor = result['continueCursor']
    done = result["isDone"]
    data.extend(result['page'])
    print('got', len(result['page']), 'results')

print('collected', len(data), 'results')

版本控制

虽然我们处于预1.0.0版本,但我们将对大更改更新次要版本,对小错误修复更新补丁版本。我们可能会对Python客户端的API进行向后不兼容的更改,但我们将在次要版本升级中限制这些更改。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

convex-0.6.0.tar.gz (185.0 kB 查看哈希值)

上传时间 源代码

构建分发

convex-0.6.0-cp39-abi3-win_amd64.whl (846.5 kB 查看哈希值)

上传时间 CPython 3.9+ Windows x86-64

convex-0.6.0-cp39-abi3-win32.whl (834.3 kB 查看哈希值)

上传时间 CPython 3.9+ Windows x86

convex-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.8 MB 查看哈希值)

上传时间 CPython 3.9+ manylinux: glibc 2.17+ x86-64

convex-0.6.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (29.5 MB 查看哈希值)

上传时间 CPython 3.9+ manylinux: glibc 2.17+ s390x

convex-0.6.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (26.6 MB 查看哈希值)

上传时间 CPython 3.9+ manylinux: glibc 2.17+ ppc64le

convex-0.6.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (26.9 MB 查看哈希值)

上传时间 CPython 3.9+ manylinux: glibc 2.17+ i686

convex-0.6.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (20.8 MB 查看哈希值)

上传时间 CPython 3.9+ manylinux: glibc 2.17+ ARMv7l

convex-0.6.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (27.0 MB 查看哈希值)

上传时间 CPython 3.9+ manylinux: glibc 2.17+ ARM64

convex-0.6.0-cp39-abi3-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传时间 CPython 3.9+ macOS 11.0+ ARM64

convex-0.6.0-cp39-abi3-macosx_10_12_x86_64.whl (1.2 MB 查看哈希值)

上传时间 CPython 3.9+ macOS 10.12+ x86-64

由以下支持