【问题标题】:How to call a function in a different module in Python and not repeating the function如何在 Python 中调用不同模块中的函数而不重复该函数
【发布时间】:2021-09-18 15:00:06
【问题描述】:

我在 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

但是,由于该函数在项目的许多其他文件中被调用,它在运行时一遍又一遍地要求我输入用户名。

如何输入用户名一次,然后使用该缓存值获取所需的数据库,而无需多次输入用户名?

(对不起,用外行的话问;我是初学者。)

【问题讨论】:

    标签: python mysql function module


    【解决方案1】:

    怎么样:

    
    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
    
    

    通过将用户变量放在函数之外,它就变成了一个全局变量。在您测试内部,用户变量是否已填充

    【讨论】:

      【解决方案2】:

      您可以获取一次用户输入并将名称作为参数传递给您的函数,如下所示:

      user = input('Enter name')
      def getData(user):
          ##your code
          
      

      【讨论】:

        【解决方案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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多