Python Sqlalchemy 2.0 based serverside processing for jQuery datatables.
Project description
sqlalchemy2-datatables
Summary
sqlalchemy2-datatables is a framework agnostic library providing an SQLAlchemy integration of jQuery DataTables >= 1.10, and helping you manage server side requests in your application.
Inspiration
This project was inspired by sqlalchemy-datatables developed by Michel Nemnom aka Pegase745.
Motivation
Given the sunstantial changes with SQLAlchemy 2.0 most of not all of the SQLAlchemy based datatables serverside solution will be outdated soon (labeit currently still supported in SQLAlchemy 1.4). Specifically deprecation of sqlalchemy.orm.Query will render those packages obsolete. SQLAlchemy2.0.
Installation
pip install sqlalchemy2-datatables
Examples
Generic CRUD style function:
from typing import Any
from sqlalchemy import Engine
from sqlalchemy import FromClause
from datatables import DataTable
from datatables.base import DTDataCallbacks
def get_datatable_result(
params: dict[str, Any],
table: FromClause,
column_names: list[str],
engine: Engine,
callbacks: DTDataCallbacks | None,
) -> dict[str, Any]:
"""
Get database results specifically formatted for a display via jQuery datatables.
:param params: dict - request parameters
:param table: FromClause - the sqlalchemy from clause
:param column_names - List of column names reflecting the table columns in the desired order
:param engine: Engine - the sqlalchemy engine
:param callbacks - datatables callbacks to populate jQuery datatables DT_* attributes
:return dict with DataTable output for the jQuery datatables in the frontend view
"""
datatable: DataTable = DataTable(
request_params=params,
table=table,
column_names=column_names,
engine=engine,
callbacks=callbacks
)
return datatable.output_result()
The output dictionary that can be serialized and returned to jQuery datatables.
{
"start": 0,
"length": 5,
"draw": 1,
"recordsTotal": 1000,
"recordsFiltered": 1000,
"data": [
{
"id": 1,
"col1": "value",
"col2": "value",
"col3": "value",
"col4": "value",
},
{
"id": 2,
"col1": "value",
"col2": "value",
"col3": "value",
"col4": "value",
},
{
"id": 3,
"col1": "value",
"col2": "value",
"col3": "value",
"col4": "value",
},
{
"id": 4,
"col1": "value",
"col2": "value",
"col3": "value",
"col4": "value",
},
{
"id": 5,
"col1": "value",
"col2": "value",
"col3": "value",
"col4": "value",
},
],
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sqlalchemy2_datatables-0.6.2.tar.gz
.
File metadata
- Download URL: sqlalchemy2_datatables-0.6.2.tar.gz
- Upload date:
- Size: 16.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.23.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d20ae44893c932a159675c1d547228283502d29458e53901b74535d3c30788a |
|
MD5 | 876a36cd1dcacc466ae7bf818c41b876 |
|
BLAKE2b-256 | 9c8c79847670b349f6fdf42abc363a7edf5f6d65c5e4c50e33055afc2a0bf77d |
File details
Details for the file sqlalchemy2_datatables-0.6.2-py3-none-any.whl
.
File metadata
- Download URL: sqlalchemy2_datatables-0.6.2-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.23.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89e028b128665f2df06075285d67ebb496d0c053badbbd6805d5d3839a95919a |
|
MD5 | a6ad27ff7a9f07bcd39efa0a1f13ee7f |
|
BLAKE2b-256 | 8b3ba913ca939d547187d099ae9c40555b2ec0783a247e0d9e1f0954cb461ac3 |