1
0
Fork 0
mirror of https://github.com/yweber/lodel2.git synced 2026-07-10 09:20:49 +02:00
lodel2_mirror/leobject/datasources/ledatasourcesql.py

39 lines
No EOL
1.3 KiB
Python

#-*- coding: utf-8 -*-
from ledatasource import LeDataSource
from mosql.db import Database, all_to_dicts
from mosql.query import select
from Lodel.utils.mosql import *
## SQL DataSource for LeObject
class LeDataSourceSQL(LeDataSource):
def __init__(self, module=None, *conn_args, **conn_kargs):
super(LeDataSourceSQL, self).__init__()
self.db = Database(self.module, self.conn_args, self.conn_kargs)
## @brief search for a collection of objects
# @param emclass
# @param emtype
# @param filters list : list of tuples formatted as (FIELD, OPERATOR, VALUE)
# @param relational_filters
def get(self, emclass, emtype, field_list, filters, relational_filters):
class_name = emclass.name
type_name = emtype.name
tablename = "" # TODO
where_filters = self._prepare_filters(filters)
query = select(tablename, where=where_filters, select=field_list)
self.db.execute(query)
return all_to_dicts(self.db)
def _prepare_filters(self, filters):
prepared_filters = {}
for filter in filters:
prepared_filter_key = (filter[0], filter[1])
prepared_filter_value = filter[2]
prepared_filters[prepared_filter_key] = prepared_filter_value
return prepared_filters