Índice
Este script muestra cómo ejecutar consultas SQL en SeaTable con base.query(). A diferencia de base.list_rows(), con SQL puede filtrar, agrupar y agregar datos de forma selectiva, sin necesidad de cargar todas las filas. El script es adecuado para la ejecución manual o como automatización.
Ventajas de las consultas SQL
base.list_rows() |
base.query() |
|
|---|---|---|
| Filtrado | Solo mediante filtros de vista | Cláusula WHERE |
| Agrupación | No es posible | GROUP BY |
| Agregación | No es posible | SUM, COUNT, AVG, MIN, MAX |
| Límite estándar | 100 filas | 100 filas |
| Límite máximo | 1.000 filas | 10.000 filas |
El script
El script ejecuta varias consultas SQL contra una tabla de pedidos y muestra los resultados. Ajuste TABLE a la estructura de su tabla.
from seatable_api import Base, context
base = Base(context.api_token, context.server_url)
base.auth()
TABLE = "Orders"
# 1. Filter: unpaid orders
print("=== Unpaid orders ===")
rows = base.query(f"SELECT Product, Customer, Amount FROM `{TABLE}` WHERE `Paid` = false")
for row in rows:
print(f" {row['Product']} - {row['Customer']} - {row['Amount']}")
# 2. Aggregate: total revenue per category
print(".")
print("=== Revenue per category ===")
rows = base.query(f"SELECT Category, SUM(Amount) AS total FROM `{TABLE}` GROUP BY Category")
for row in rows:
print(f" {row['Category']}: {row['total']}")
# 3. Aggregate: orders per customer
print(".")
print("=== Orders per customer ===")
rows = base.query(f"SELECT Customer, COUNT(*) AS orders, SUM(Amount) AS total FROM `{TABLE}` GROUP BY Customer ORDER BY total DESC")
for row in rows:
print(f" {row['Customer']}: {row['orders']} orders, {row['total']} total")
# 4. Filter with date range
print(".")
print("=== Orders in March 2026 ===")
rows = base.query(f"SELECT Product, Customer, Date, Amount FROM `{TABLE}` WHERE `Date` BETWEEN '2026-03-01' AND '2026-03-31'")
for row in rows:
print(f" {row['Date']} - {row['Product']} ({row['Customer']}): {row['Amount']}")
# 5. Summary
print(".")
print("=== Summary ===")
rows = base.query(f"SELECT COUNT(*) AS count, SUM(Amount) AS revenue, AVG(Amount) AS avg_order FROM `{TABLE}`")
r = rows[0]
print(f" {r['count']} orders, {r['revenue']} total revenue, {r['avg_order']:.2f} avg order value")
Salida de ejemplo
Sintaxis SQL en SeaTable
SeaTable soporta las operaciones SQL más importantes:
- WHERE — Filtrar con
=,!=,LIKE,IN,BETWEEN,IS NULL - GROUP BY — Agrupar con
SUM,COUNT,AVG,MIN,MAX - ORDER BY — Ordenar (ASC/DESC)
- LIMIT / OFFSET — Limitar resultados (máx. 10.000)
- DISTINCT — Solo valores únicos
La referencia SQL completa se encuentra en el SeaTable Developer Manual .