Я определил функцию на другой странице в Python следующим образом:

def getData():
    user=input('Enter Name')
    if user=='Irfan':
        mydb = mysql.connector.connect(host='localhost', user='root', passwd='', database='sample_data')
        df = pd.read_sql_query('select * from sample_data.sample_data3', mydb)
    else:
        if user=='Usman':
            mydb = mysql.connector.connect(host='localhost', user='root', passwd='', database='')
            df = pd.read_sql_query('select * from sample_data.sample_data1', mydb)

    return df

Однако, поскольку эта функция вызывается во многих других файлах проекта, во время выполнения она снова и снова просит меня ввести имя пользователя.

Как я могу ввести имя пользователя один раз , а затем использовать это кешированное значение для получения необходимой базы данных без необходимости вводить имя пользователя несколько раз?

(Извините, что спросил неспециалистом; я новичок.)

0
Usman Afridi 8 Июл 2021 в 09:30

3 ответа

Лучший ответ

Сделайте учетные данные глобальными ..

user=input('Enter Name')

def getData():
global user
if user=='Irfan':
    mydb = mysql.connector.connect(host='localhost', user='root', passwd='', database='sample_data')
    df = pd.read_sql_query('select * from sample_data.sample_data3', mydb)
else:
    if user=='Usman':
        mydb = mysql.connector.connect(host='localhost', user='root', passwd='', database='')
        df = pd.read_sql_query('select * from sample_data.sample_data1', mydb)

return df
2
Dhananjay_Goratela 8 Июл 2021 в 06:37

Вы можете получить пользовательский ввод один раз и передать имя в качестве параметра вашей функции, как показано ниже:

user = input('Enter name')
def getData(user):
    ##your code
    
0
Darshan Patel 8 Июл 2021 в 06:38

Как насчет:


user = ''
def getData():
    if len(user) == 0:
        user=input('Enter Name')
    
    if user=='Irfan':
        mydb = mysql.connector.connect(host='localhost', user='root', passwd='', database='sample_data')
        df = pd.read_sql_query('select * from sample_data.sample_data3', mydb)
    else:
        if user=='Usman':
            mydb = mysql.connector.connect(host='localhost', user='root', passwd='', database='')
            df = pd.read_sql_query('select * from sample_data.sample_data1', mydb)

    return df

Помещая пользовательскую переменную вне функции, она становится глобальной переменной. Внутри вы проверяете, заполнена ли уже пользовательская переменная или нет

0
Dharman 8 Июл 2021 в 06:43