多个连接到同一个电子表格(gspread)

时间:2016-10-12 11:52:06

标签: python gspread

早上好,这是我的第一个问题,请耐心等待!我创建了一个系统,用于在我的高中进行模拟选举,使用覆盆子pi和触摸屏。界面通过TKInter处理,然后使用gspread将结果附加到谷歌表。这使我可以在各种图表和分析中处理数据。

我遇到的问题是我使用的是4台机器。如果我一次拿一个,他们会追加数据。如果我一次做多台机器,我有时只能等待另一台机器,有时只记录4台机器中的1台。

是否有可能更好地设置从不同的机器同时推送多个附加?目前,每台机器都是其他机器的镜像。如果我为每台机器执行不同的授权设置和不同的JSON文件,它会更好吗?或者还有其他我想念的东西?写入工作表的相关代码如下:

    #while True:
    # Login if necessary.
    if worksheet is None:
        worksheet = login_open_sheet(GDOCS_OAUTH_JSON, GDOCS_SPREADSHEET_NAME)

    # Append the data in the spreadsheet, including a timestamp
    try:
        worksheet.append_row((datetime.datetime.now(), gender, grade, party, vote))
    except:
        # Error appending data, most likely because credentials are stale.
        # Null out the worksheet so a login is performed at the top of the loop.
        print('Append error, logging in again')
        worksheet = None

提前感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

这里的问题是,如果您同时启动所有这四台机器,它们将具有相对类似的状态。但是,一旦一台机器进行了更改,所有其他机器的状态就会变得与实际纸张不同。

让我们说这张表以N行开头。

如果Machine1向工作表附加2行,则行数将变为N + 2.

BUT

机器2-4仍然认为工作表有N行!

当这些N行机器中的任何一台试图附加到工作表时,它们将覆盖Machine1写入工作表的数据,显然不是你想要在计票时发生的事情。

您需要找到一种方法让每台机器知道纸张状态何时发生变化并刷新其状态,或者只有一个接触点可以从中进行所有追加。