跳至内容

客户端

为了进行任何 Prisma Client Python 查询,您需要创建并连接到一个Client实例,例如

from prisma import Prisma

db = Prisma()
await db.connect()
await db.user.create(
    data={
        'name': 'Robert',
    },
)

您也可以直接从模型类进行查询,有关更多信息,请参阅模型操作

from prisma.models import User

user = await User.prisma().create(
    data={
        'name': 'Robert',
    },
)

数据源覆盖

可以覆盖用于连接数据库的默认 URL。

db = Prisma(
    datasource={
        'url': 'file:./tmp.db',
    },
)

上下文管理器

为了使运行小型脚本尽可能简单,Prisma Client Python 支持使用 上下文管理器 连接和断开与数据库的连接。

例如

from prisma import Prisma

async with Prisma() as db:
    await db.user.create(
        data={
            'name': 'Robert',
        },
    )

这在功能上等同于

from prisma import Prisma

db = Prisma()

try:
    await db.connect()
    await db.user.create(
        data={
            'name': 'Robert',
        },
    )
finally:
    if db.is_connected():
        await db.disconnect()

HTTP 选项

Prisma Client Python 使用的一些与底层 Prisma 二进制文件通信的方法利用 HTTPX 通过 HTTP 进行通信。因此,一些 HTTPX 客户端选项 可以针对每个客户端进行配置。

可以使用 http 参数将 HTTPX 选项传递给客户端,例如

db = Prisma(
    http={
        'timeout': 10,
    },
)

将对所有 http 操作使用 10 秒的超时时间。

您还可以通过传递 None 来删除超时,例如

db = Prisma(
    http={
        'timeout': None,
    },
)

并非所有 HTTPX 支持的选项都受 Prisma Client Python 支持,完整的列表如下

class HttpConfig(TypedDict, total=False):
    app: Callable[[Mapping[str, Any], Any], Any]
    http1: bool
    http2: bool
    limits: httpx.Limits
    timeout: Union[None, float, httpx.Timeout]
    trust_env: bool
    max_redirects: int

这些选项的文档可以 在这里 找到