上传csv文件在铁砧与上行链路

2024-06-09 06:10:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个错误:

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笔记本中用于将数据上传到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)

Tags: csvtofromimportselftablesinitis
1条回答
网友
1楼 · 发布于 2024-06-09 06:10:51

我认为您看到的错误是因为您为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:
    ...

那它应该对你有用

相关问题 更多 >