Skip to main content

SqlAlchemy DS Manager: A simple datasource manager for SqlAlchemy using json file and cache manager for your sql statement

Project description

SqlAlchemy DS Manager: A simple datasource manager for SqlAlchemy using json file and cache manager for your sql statement

PyPi

pip install sqlalchemy-ds-manager

Configs

[
  {
    "provider": "ORACLE",
    "source": [
      {
        "name": "golang",
        "server": "server_name",
        "port": 1000,
        "service_name": "service_name"
      }
    ]
  },
  {
    "provider": "SQLSERVER",
    "source": [
      {
        "name": "rust",
        "server": "server_name",
        "database": "database_name"
      }
    ]
  }
]

Usage

without cache

from sqlalchemy_ds_manager.datasource.manager import DatasourceManager
from sqlalchemy_ds_manager.provider.oracle import OracleProvider
from sqlalchemy_ds_manager.provider.sql_server import SqlServerProvider
from sqlalchemy import text
import pandas as pd
from os import path

def main():
    currentDir = path.dirname(__file__)
    filename = path.join(currentDir, 'datasource.json')

    sql = "Select * from table_name"

    dm = DatasourceManager(filename, providers=dict(
        ORACLE=OracleProvider,
        SQLSERVER=SqlServerProvider
    ))

    datasource = dict(
        golang = dm.get(source_name="golang", uid="go_uid", pwd="go_pwd"),
        rust = dm.get(source_name="rust", uid="rust_uid", pwd="rust_pwd")
    )
    
    with datasource.get('golang').new().connect() as conn:
        df = pd.read_sql(text(sql), conn)
    
if __name__ == "__main__":
    main()

with cache

from sqlalchemy_ds_manager.datasource.manager import DatasourceManager
from sqlalchemy_ds_manager.provider.oracle import OracleProvider
from sqlalchemy_ds_manager.provider.sql_server import SqlServerProvider
from sqlalchemy_ds_manager.cache.file import FileCache
from sqlalchemy import text
import pandas as pd
import time
from os import path

currentDir = path.dirname(__file__)
filename = path.join(currentDir, 'datasource.json')
folder = path.join(currentDir, 'cache_files')

dm = DatasourceManager(filename, providers=dict(
    ORACLE=OracleProvider,
    SQLSERVER=SqlServerProvider
))

datasource = dict(
    golang = dm.get(source_name="golang", uid="go_uid", pwd="go_pwd"),
    rust = dm.get(source_name="rust", uid="rust_uid", pwd="rust_pwd")
)

def main():
    sql = "Select * from table_name"
    fc = FileCache(folder)
    df = getSql(sql, "golang", fc)
    
def getSql(sql, source_name: str, fc):
    exist = fc.find(sql)
    if exist == None:
        with datasource.get(source_name).new().connect() as conn: 
            start = time.time()
            df = pd.read_sql(text(sql), conn)
            duration = round(time.time() - start, 2) 
            filename = fc.add(sql, duration)
            df.to_pickle(filename)
            return df
    else:
        return pd.read_pickle(exist)

if __name__ == "__main__":
    main()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlalchemy_ds_manager-0.0.1.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqlalchemy_ds_manager-0.0.1-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file sqlalchemy_ds_manager-0.0.1.tar.gz.

File metadata

  • Download URL: sqlalchemy_ds_manager-0.0.1.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for sqlalchemy_ds_manager-0.0.1.tar.gz
Algorithm Hash digest
SHA256 570ba9804564922d1640040c0e31f121bacc00d00c278ba0cd1b83aa996f3367
MD5 3813d67e1c9d7a0b0d43811505a8c47f
BLAKE2b-256 12cabc5623de3db4470f77685dad007058b713e77175ea67ed10323b239be89d

See more details on using hashes here.

File details

Details for the file sqlalchemy_ds_manager-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlalchemy_ds_manager-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4dda024a0e2e21cee2b5710b0019ea35aad64ad2f1ea44ac997052ddf6160475
MD5 28b81ecd709ffdb9306928b875988b41
BLAKE2b-256 c9edf7c522f00d6fa3c4beeae0466bcea240496e0c4e1bae7d5b6f9f0255c363

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page