Функции, параметры и psycopg2

Не могу разобраться с функциями и параметрами( Подскажите пожалуйста и не кидайте тапками

def get_connect_to_database():
    try:
        connect = psycopg2.connect(dbname = name_of_database, user = user, password = password, host= host)
        print('\n', Fore.GREEN+'================= CONNECTION OK =================')
        print(Fore.RESET)
        cur = connect.cursor()
        time_start = time.time()
    except Exception as _ex:
        print(Fore.RED + '[-Error-]CONNECTION NOT OK', _ex)


def get_query_from_database():
    try:
        get_data_from_first_table = """
            SELECT id,pas_id, date_add, status_id
            FROM status_history 
            where status_id !=7
            and date_add>= now()- interval '10 day'
            order by date_add desc limit 50"""
        cur.execute(get_data_from_first_table)
        data_frame_from_first_table = cur.fetchall()
        print(get_data_from_first_table)
    except Exception as _ex:
        print(Fore.RED + "[-Error-] ERROR WITH QUERY")

Как мне правильно добавить cur в функцию def get_query_from_database(). Он не активен


Ответы (1 шт):

Автор решения: n1tr0xs

Есть несколько вариантов:

  1. Передавать в параметры:
def get_connect_to_database():
    try:
        connect = psycopg2.connect(dbname = name_of_database, user = user, password = password, host= host)
        print('\n', Fore.GREEN+'================= CONNECTION OK =================')
        print(Fore.RESET)
        cur = connect.cursor()
        time_start = time.time()
        return cur # <---
    except Exception as _ex:
        print(Fore.RED + '[-Error-]CONNECTION NOT OK', _ex)

def get_query_from_database(cur): # <---
    try:
        get_data_from_first_table = """
            SELECT id,pas_id, date_add, status_id
            FROM status_history 
            where status_id !=7
            and date_add>= now()- interval '10 day'
            order by date_add desc limit 50"""
        cur.execute(get_data_from_first_table)
        data_frame_from_first_table = cur.fetchall()
        print(get_data_from_first_table)
    except Exception as _ex:
        print(Fore.RED + "[-Error-] ERROR WITH QUERY")

cur = get_connect_to_database() # <---
if cur: # <---
    get_query_from_database(cur) # <---
  1. Сделать переменную глобальной:
cur = None # <---

def get_connect_to_database():
    global cur # <---
    try:
        connect = psycopg2.connect(dbname = name_of_database, user = user, password = password, host= host)
        print('\n', Fore.GREEN+'================= CONNECTION OK =================')
        print(Fore.RESET)
        cur = connect.cursor()
        time_start = time.time()
    except Exception as _ex:
        print(Fore.RED + '[-Error-]CONNECTION NOT OK', _ex)


def get_query_from_database():
    global cur # <---
    try:
        get_data_from_first_table = """
            SELECT id,pas_id, date_add, status_id
            FROM status_history 
            where status_id !=7
            and date_add>= now()- interval '10 day'
            order by date_add desc limit 50"""
        cur.execute(get_data_from_first_table)
        data_frame_from_first_table = cur.fetchall()
        print(get_data_from_first_table)
    except Exception as _ex:
        print(Fore.RED + "[-Error-] ERROR WITH QUERY")
→ Ссылка