DatabaseDataSource
The DatabaseDataSource
uses SQLAlchemy statements to fetch data from the database. This is the most common data source for production use.
Basic Usage
from sqlalchemy import select
from ckan import model
from ckanext.tables.shared import DatabaseDataSource
data_source = DatabaseDataSource(
stmt=select(
model.User.id,
model.User.email,
model.User.name,
model.User.state,
).order_by(model.User.created.desc()),
model=model.User,
)
Definition
A data source that uses a SQLAlchemy statement as the data source.
PARAMETER | DESCRIPTION |
---|---|
stmt
|
The SQLAlchemy statement to use as the data source
TYPE:
|
model
|
The model class to use for filtering and sorting, e.g.
TYPE:
|
Source code in ckanext/tables/data_sources.py
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
|
Best Practices
- Use selective queries
- Add database indexes for commonly filtered/sorted columns
# Good: Select only needed columns
stmt = select(model.User.id, model.User.name, model.User.email)
# Avoid: Selecting everything
stmt = select(model.User)