Source code for pyomop.vector

import asyncio
import pandas as pd
from sqlalchemy.inspection import inspect
from sqlalchemy import text
from .sqldict import CDMSQL
# https://gist.github.com/dermatologist/f436cb461a3290732a27c4dc040229f9
# Thank you! https://gist.github.com/garaud
[docs]class CdmVector(object): def __init__(self, result=None): self._result = result self._df = None @property def df(self): if self._df is None: self.create_df() return self._df @property def result(self): return self._result @result.setter def result(self, value): self._result = value
[docs] def query_to_list(self): """List of result Return: columns name, list of result """ result_list = [] instance = None if self._result is None: return None, [] for obj in self._result: instance = inspect(obj) items = instance.attrs.items() result_list.append([x.value for _,x in items]) if instance is None: return None, [] return instance.attrs.keys(), result_list
[docs] def create_df(self, _names=None): names, data = self.query_to_list() if(_names): names = _names self._df = pd.DataFrame.from_records(data, columns=names)
[docs] async def sql_df(self, cdm, sqldict=None, query=None, chunksize=1000): if sqldict: query=CDMSQL[sqldict] async with cdm.session() as session: result = await session.execute(text(query)) self._result = result await session.close() return result