feat: пример pg-list-python — список из PostgreSQL без джоба
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# 2026-03-11
|
||||
# catalog.py — читает список продуктов из PostgreSQL.
|
||||
# Таблица demo_products создаётся автоматически при первом вызове.
|
||||
# Точка входа: list_products(event)
|
||||
|
||||
import json
|
||||
import os
|
||||
import psycopg2
|
||||
|
||||
|
||||
def list_products(event):
|
||||
dsn = os.environ["PG_DSN"]
|
||||
conn = psycopg2.connect(dsn)
|
||||
try:
|
||||
with conn.cursor() as cur:
|
||||
_ensure_table(cur)
|
||||
conn.commit()
|
||||
|
||||
cur.execute("SELECT id, name, price FROM demo_products ORDER BY id")
|
||||
rows = cur.fetchall()
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
products = [{"id": row[0], "name": row[1], "price": row[2]} for row in rows]
|
||||
return {"products": products, "count": len(products)}
|
||||
|
||||
|
||||
def _ensure_table(cur):
|
||||
# Создаём таблицу и наполняем демо-данными — только один раз
|
||||
cur.execute("""
|
||||
CREATE TABLE IF NOT EXISTS demo_products (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
price NUMERIC(10,2) NOT NULL
|
||||
)
|
||||
""")
|
||||
cur.execute("SELECT COUNT(*) FROM demo_products")
|
||||
if cur.fetchone()[0] == 0:
|
||||
cur.executemany(
|
||||
"INSERT INTO demo_products (name, price) VALUES (%s, %s)",
|
||||
[
|
||||
("Ноутбук", 89999.00),
|
||||
("Мышь", 1299.00),
|
||||
("Клавиатура", 3499.00),
|
||||
("Монитор", 32000.00),
|
||||
],
|
||||
)
|
||||
Reference in New Issue
Block a user