【问题标题】:Upload csv file in Anvil with uplink使用上行链接在 Anvil 中上传 csv 文件
【发布时间】:2020-05-13 05:25:32
【问题描述】:

我有这样的错误:

TypeError: __init__() takes from 1 to 2 positional arguments but 3 were given at <ipython-input 4-66c1c8f89515>, line 8 called from Form1, line 18

这是我在 anvil 中的代码:

class Form1(Form1Template):
def __init__(self, **properties):
    # Set Form properties and Data Bindings.
    self.init_components(**properties)

  def file_loader_1_change(self, file, **event_args):
    """This method is called when a new file is loaded into this FileLoader"""
    anvil.server.call('import_csv_data',file)

jupyter notebook 中的这段代码用于将数据上传到 anvil 数据表:

import pandas as pd
import anvil.tables as tables
from anvil.tables import app_tables
import anvil.media

@anvil.server.callable
def import_csv_data(file):
  with anvil.media.TempFile(file, "r") as f:
    df = pd.read_csv(f)
    for d in df.to_dict(orient="records"):
      # d is now a dict of {columnname -> value} for this row
      # We use Python's **kwargs syntax to pass the whole dict as
      # keyword arguments
      app_tables.NilaiTukar.add_row(**d)

【问题讨论】:

    标签: python anvil


    【解决方案1】:

    我认为您看到的错误是因为您向anvil.media.TempFile 提供了两个参数,而它仅设计为接受一个。我用一个更简单的例子复制了你的错误:

    import anvil.media
    
    @anvil.server.callable
    def import_csv_data(file):
      with anvil.media.TempFile(file, "r") as f:
        pass
    
    if __name__ == "__main__":
      import_csv_data("fname.txt")
    

    根据the docs,您不需要“r”参数。你应该打电话:

    @anvil.server.callable
    def import_csv_data(file):
      with anvil.media.TempFile(file) as f:
        ...
    

    那么它应该适合你。

    【讨论】:

    • 我还要补充一点,如果您以后想获得有关此类问题的更快答案,您可能想在the Anvil forum上提问
    猜你喜欢
    • 2015-03-15
    • 2018-07-18
    • 2021-01-01
    • 1970-01-01
    • 2022-07-01
    • 2019-04-17
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多