【问题标题】:Perform a function for a list of values in Python对 Python 中的值列表执行函数
【发布时间】:2020-07-02 22:25:54
【问题描述】:

我是 Python 的初学者,我正在尝试编写一个程序来从 Google 表格中获取数据并将其插入 MYSQL。我有一个值列表,我想为列表中的每个值执行一个函数,直到最后一个值。

##Get range

def range_list():
    for i in range(1,5):
        print(i)

list = range_list()

##从列表中获取值

    array_data = (array(array(data[list])))
    print(array_data)
    
    s_symbol = str((array(array_data[0])))
    s_name = str((array(array_data[1])))

我想更改 list 中的值并执行以下功能

    ##Insert to DB
        
      def insert_sql() :
            sql_insert_statement = """INSERT INTO sheet_data ( 
                                symbol,
                                name )
                                VALUES ( %s,%s )"""
            
            val = (s_symbol, s_name)
            
            cur.execute(sql_insert_statement, val)
            mydb.commit()
            print(cur.rowcount, "Record inserted successfully into s_user table")
            cur.close()

       insert_sql()

我想在这里实现的是脚本应该从 list 中获取值,并且应该执行函数 insert_sql。处理成功后,list 中的值应与之前的值发生变化。这个过程应该一直持续到 list 中的值。

所以对于array_data = (array(array(data[1])))

insert_sql() 应该被执行

再次为array_data = (array(array(data[2]))) insert_sql() 应该被执行

这个过程应该一直持续到值 5

我怎样才能做到这一点?

【问题讨论】:

  • 我对这个 (array(array(data[1]))) 感到困惑,你能解释一下什么是输入和它的模式以及你想要什么作为输出?例如,您有一个名为 A 的字符串数组,并且您希望对 A 的每个元素执行 insert_sql 并将结果保存在一个名为 B 的数组中。(这只是一个示例,我需要澄清一下。)
  • 输入是从 Google 表格中获取的,并显示为数组列表 [('APPL, APPLE INC.')], [('AMZN, AMAZON INC.')] array_data = (array(array (data[1]))) 打印 [('APPL, APPLE INC.')] 所以,s_symbol = str((array(array_data[0]))) 打印 APPL 和 s_symbol = str((array(array_data[1 ]))) 打印 APPLE INC. 同样, (array(array(data[2]))) 打印 [('AMZN, AMAZON INC.')] 值 1、2、3 等与公司的符号和它的名字。我希望 (array(array(data[list]))) 中的值发生变化,并且每次值发生变化时,insert_sql 函数也应该被执行。

标签: python python-3.x list function


【解决方案1】:

我想您可以很好地从 google sheet 中获取数据,并且您可以通过以下方式获得 array_data 列表中每个索引的数据

s_symbol = str((array(array_data[0])))  # It is supposed to have value APPL
s_name = str((array(array_data[1])))  # It is supposed to have value APPLE INC

所以你只需要在你的 array_data 上使用一个 for 循环并稍微修改你的 insert_sql 函数,如下所示:

def insert_sql(s_symbol, s_name):
    sql_insert_statement = """INSERT INTO sheet_data ( 
                          symbol,
                          name )
                          VALUES ( %s,%s )"""

    val = (s_symbol, s_name)

    cur.execute(sql_insert_statement, val)
    mydb.commit()
    print(cur.rowcount, "Record inserted successfully into s_user table")
    cur.close()

您可以为列表中的每个条目运行此函数

for i in range(len(data)):
    array_data = (array(array(data[i])))  # this is supposed to be like [('APPL, APPLE INC.')]
    s_symbol = str((array(array_data[0])))  # this is supposed to be like APPL
    s_name = str((array(array_data[1])))  # this is supposed to be like APPLE INC.
    insert_sql(s_symbol, s_name)

如果有任何问题,请告诉我。

【讨论】:

  • 完美!按我的意愿工作。
【解决方案2】:

定义另一个函数

def do_something(parameter):
    return "This number:" + str(parameter)  # for example

def range_list():
    for i in range(1,5):
        print(do_something(i))  # then call the function

range_list()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2021-06-10
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    相关资源
    最近更新 更多