← Cloudflare D1 / d1 / examples
Dotazování D1 z Python Workers
Platforma Cloudflare Workers podporuje více jazyků, včetně TypeScript, JavaScript, Rust a Python. Tento návod ukazuje, jak dotazovat databázi D1 z Python a nasaďte svou aplikaci globálně.
Předpoklady
Než začnete, měli byste:
- Zkontrolujte výukový kurz D1 pro TypeScript a JavaScript a zjistěte, jak vytvořte databázi D1 a nakonfigurujte projekt Workers.
- Viz Průvodce jazykem Python a pochopíte, jak podpora Pythonu funguje na platformě Workers.
- Mějte základní znalost jazyka Python.
Pokud s Cloudflare Workers teprve začínáte, přečtěte si Úvodní návod nejprve, než budete pokračovat v tomto příkladu.
Dotazování z Pythonu
Tento příklad předpokládá, že již máte existující databázi D1. Aby mohl váš Python Worker databázi dotazovat, musíte nejprve vytvořit binding mezi vaším Workerem a databází D1 a definovat to ve svém Konfigurační soubor Wrangler.
Budete potřebovat database_name a database_id pro databázi D1. Můžete použít wrangler CLI pro vytvoření nové databáze nebo získání ID existující databáze následujícím způsobem:
npx wrangler d1 create my-first-dbnpx wrangler d1 info some-existing-db# ┌───────────────────┬──────────────────────────────────────┐
# │ │ c89db32e-83f4-4e62-8cd7-7c8f97659029 │
# ├───────────────────┼──────────────────────────────────────┤
# │ name │ db-enam │
# ├───────────────────┼──────────────────────────────────────┤
# │ created_at │ 2023-06-12T16:52:03.071Z │
# └───────────────────┴──────────────────────────────────────┘1. Nakonfigurujte vazby
Ve svém souboru Wrangler vytvořte nový [[d1_databases]] konfigurační blok a nastavte database_name a database_id na název a id (v tomto pořadí) databáze D1, kterou chcete dotazovat:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "python-and-d1",
"main": "src/entry.py",
"compatibility_flags": [ // Required for Python Workers
"python_workers"
],
// Set this to today's date
"compatibility_date": "2026-08-28",
"d1_databases": [
{
"binding": "DB", // This will be how you refer to your database in your Worker
"database_name": "YOUR_DATABASE_NAME",
"database_id": "YOUR_DATABASE_ID"
}
]
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "python-and-d1"
main = "src/entry.py"
compatibility_flags = [ "python_workers" ]
# Set this to today's date
compatibility_date = "2026-08-28"
[[d1_databases]]
binding = "DB"
database_name = "YOUR_DATABASE_NAME"
database_id = "YOUR_DATABASE_ID"Hodnota binding je název, pod kterým budete databázi odkazovat ve svém Workeru. Pokud jej změníte, musíte tuto změnu provést i ve skriptu Workeru.
2. Vytvořte svůj Python Worker
Chcete-li vytvořit Python Worker, vytvořte prázdný soubor na src/entry.py, odpovídající hodnotě main ve vašem souboru Wrangler s tímto obsahem:
from workers import Response, WorkerEntrypoint
class Default(WorkerEntrypoint):
async def fetch(self, request):
# Do anything else you'd like on request here!
try:
# Query D1 - we'll list all tables in our database in this example
results = await self.env.DB.prepare("PRAGMA table_list").run()
# Return a JSON response
return Response.json(results)
except Exception as e:
return Response.json({"error": "Database query failed"}, status=500)Hodnota binding ve vašem souboru Wrangler musí přesně odpovídat názvu proměnné v kódu Python. Tento příklad odkazuje na databázi prostřednictvím DB binding a dotazuje se na tento binding přes await self.env.DB.prepare(...).
Poté můžete svého Python Workera nasadit přímo:
npx wrangler deploy# Example output
#
# Your worker has access to the following bindings:
# - D1 Databases:
# - DB: db-enam (c89db32e-83f4-4e62-8cd7-7c8f97659029)
# Total Upload: 0.18 KiB / gzip: 0.17 KiB
# Uploaded python-and-d1 (4.93 sec)
# Published python-and-d1 (0.51 sec)
# https://python-and-d1.YOUR_SUBDOMAIN.workers.dev
# Current Deployment ID: 80b72e19-da82-4465-83a2-c12fb11ccc72Váš Worker bude dostupný na https://python-and-d1.YOUR_SUBDOMAIN.workers.dev.
Pokud při nasazování obdržíte chybu:
- Ujistěte se, že máte nakonfigurované své Konfigurační soubor Wrangler hodnotou
database_idadatabase_nameplatné databáze D1. - Zajistěte, že
compatibility_flags = ["python_workers"]je nastaven ve vašem Konfigurační soubor Wrangler, což je vyžadováno pro Python. - Zkontrolujte seznam chybových kódů, a ujistěte se, že váš kód nevyvolá nezachycenou výjimku.
Další kroky
- Viz Dokumentace Workers Python a dozvíte se více o používání Pythonu ve Workers.
- Zkontrolujte D1 Workers Binding API a jak dotazovat databáze D1.
- Přečtěte si jak importovat data k vaší databázi D1.