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()),
)
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:
|
Source code in ckanext/tables/data_sources.py
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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | |
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)