Untitled

 avatar
unknown
plain_text
a month ago
1.2 kB
2
Indexable
import os
import sqlite3
import pandas as pd

os.environ['SQLITE_DB_PATH'] = r'/c01/home/lidtd3o/APP_K/app_db_new.db'


def get_parent_child(program_id, var_name):
    """
    Optimized function to fetch the child and parent of a variable.
    """

    # Parse the variable name if it contains "OF"
    if ' OF ' in var_name:
        parts = [part.strip() for part in var_name.split(' OF ')]
        return parts[0], parts[1]

    # Connect to the database (single connection)
    conn = sqlite3.connect(os.getenv('SQLITE_DB_PATH'))
    
    # Use parameterized query for safety and efficiency
    query = """
        SELECT VARIABLE_NAME, VARIABLE_PARENT 
        FROM BRE_ATTRIBUTE_TBL
        WHERE PROGRAM_NAME = ? 
          AND (VARIABLE_NAME = ? OR VARIABLE_PARENT = ?)
    """
    df = pd.read_sql_query(query, conn, params=(program_id, var_name, var_name))
    conn.close()  # Close the connection immediately after fetching data

    # Filter and extract parent and child directly
    child = df.loc[df['VARIABLE_PARENT'] == var_name, 'VARIABLE_NAME'].last(valid_only=True)
    parent = df.loc[df['VARIABLE_NAME'] == var_name, 'VARIABLE_PARENT'].last(valid_only=True)

    return child, parent
Editor is loading...
Leave a Comment