Convex的Python客户端,用于反应式后端作为服务的Convex。
项目描述
Convex
Convex的官方Python客户端。
使用查询、变更和操作从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 | float 或 int | 3.1 , 10 |
|
boolean | bool | True ,False |
|
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
通常被认为包含int
:float
类型注解通常理解为Union[int, float]
。
因此,Python Convex客户端将Python的float
和int
转换为Convex中的Float64
。
要指定JavaScript BigInt,请使用ConvexInt64类。返回JavaScript BigInt的函数将返回ConvexInt64实例。
Convex错误
Python客户端支持ConvexError
类型来持有从您的Convex函数传播的应用程序错误。有关如何抛出ConvexError
的说明,请参阅https://docs.convex.dev/functions/error-handling/application-errors。
在Python客户端上,ConvexError
是带有包含一些ConvexValue
的data
字段的异常。处理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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5f149f2b5ac4f6f341aa303ce1166e9f176796b1ba665c633ff34982ccfd7250 |
|
MD5 | 2219db66235ca30684dc806109ca9e53 |
|
BLAKE2b-256 | 57989c8928ff73560b08769bb60611c56066dc12b2fdeecb519bc4cf4fe89ac0 |
convex-0.6.0-cp39-abi3-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 671f332f3d6165ed2577d76f95f4fb167f2244f5c6d7ecfb6b2ecff8eec71e1f |
|
MD5 | cae7d1ba6ffad2244784cae619d84eae |
|
BLAKE2b-256 | 1a493220c52d2cde79ad030edd4afd9476863a23c86dca5a66dbae4c3cb9a7c8 |
convex-0.6.0-cp39-abi3-win32.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4a7ef61334c27caa883614e20b7ff1dd98dabe7ad3007cbf6e26010ff30d7962 |
|
MD5 | 7cbb12e4045d8f0bf9c55344b7275ac1 |
|
BLAKE2b-256 | ba1fab59bc2f39671a1b8e52d515b29816d7088dc28de6e09543b6379f71efe6 |
convex-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9cf518bb23990dd2fd20f1f52903fb8632dd2457c9f536bddfb3d33497555bdc |
|
MD5 | f85d1c26c20d9ec078466404ad90f75f |
|
BLAKE2b-256 | b8c95a2981f78b0e9072b57537a9a85bcee9c6aaf42a467ba414549b948a7b26 |
convex-0.6.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1d0f967c8a40cc9b1317bcf944f262dadff7b079d7e960629d070b3058984199 |
|
MD5 | f0c616423c1c698e67dfd875950cdad4 |
|
BLAKE2b-256 | 7bc0851952439395161fcd754217d4fd4c61e89efc9b277ffe4c043da6bb66a5 |
convex-0.6.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2aba425b3e2ab72421ec6079b32ec9827240eb8b7c2244c9a59e2d20b63dcf67 |
|
MD5 | 405bfb57240754594e7812a08989f15c |
|
BLAKE2b-256 | 0f73d431a30fe85b0a32cd5d182b3ebe376c7f68bfec407fa264c99c9acffa21 |
convex-0.6.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b1c2aa28c853708734da74a000bddabf8a6cc848a8b7c4b22f6061422baa101d |
|
MD5 | be15e1efa4accc36c758316e7e4d912c |
|
BLAKE2b-256 | 062806c5e322e66fcb2c355816b4b2b0e178b9bdfe6ae9cd82f692bf2d3af830 |
convex-0.6.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 491af59ca21470fdefc1a6eaf1d046599c014748c5a568405eaef1a14f7c2531 |
|
MD5 | 2e77d376d74cd6ffc1e68b1501198d92 |
|
BLAKE2b-256 | dc4c157c186c544847c6faee29ab482135d1fdfeffd197f516975041fe73f646 |
convex-0.6.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7b66fe64600e9c9000f333410877c2d5917dc072082ce041dc101323bbee1f97 |
|
MD5 | b5359aecc4c6afb988fa8b24b883a9e8 |
|
BLAKE2b-256 | e162b23d9493f6a6cfe4dc93971fb50d96bffeacc9110b511f5f5516872b78d1 |
哈希值 for convex-0.6.0-cp39-abi3-macosx_10_12_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d5197bccc6b835375e4764783045f7acdbc9764b7fc6e9dfcdd22b29e74a9f83 |
|
MD5 | d0ef571d3e54653e01d3f70f06ec3f75 |
|
BLAKE2b-256 | 414a3c20b8e6c0d574d3dc890ab60ddd4bb440901476f213fce8f50c59439406 |