Вывод типа C# общего метода вводит параметр, где метод не имеет никаких аргументов

С помощью метода parallel_bulk вы можете передать список диктов или генератор, который выдает диктат. Объяснение здесь . generator в python служит для того, чтобы не загружать в ОЗУ переменную, но если вы должны передать ваш elem в списке раньше - dict action в списке actions, он больше не имеет смысла, потому что строить список вы должны загрузить в память все элементы внутри него. В вашем случае вы передаете генератор, который выдает не dict elem - action - но он выдает список операций - actions.

Итак, или ваша функция _gen_data возвращает список, действительно, генератора:

def _gen_data(self, index, doc_type, chunk_size):
    sql = """select * from tem_search_engine_1 where rownum <= 10000"""  
    self.cursor.execute(sql)
    col_name_list = [col[0].lower() for col in self.cursor.description]
    col_name_len = len(col_name_list)
    actions = []

    start = time.time()
    for row in self.cursor:
        source = {}
        tbl_id = ""
        for i in range(col_name_len):
            source.update({col_name_list[i]: str(row[i])})
            if col_name_list[i] == "tbl_id":
                tbl_id = row[i]
        action = {
            "_index": index,
            "_type": doc_type,
            "_id": tbl_id,  
            "_source": source
        }
        actions.append(action)
    return actions

Или вы не создаете список actions и выдает dict action:

def _gen_data(self, index, doc_type, chunk_size):
    sql = """select * from tem_search_engine_1 where rownum <= 10000"""  
    self.cursor.execute(sql)
    col_name_list = [col[0].lower() for col in self.cursor.description]
    col_name_len = len(col_name_list)


    start = time.time()
    for row in self.cursor:
        source = {}
        tbl_id = ""
        for i in range(col_name_len):
            source.update({col_name_list[i]: str(row[i])})
            if col_name_list[i] == "tbl_id":
                tbl_id = row[i]
        yield {
            "_index": index,
            "_type": doc_type,
            "_id": tbl_id,  
            "_source": source
        }

7
задан Michiel van Oosterhout 28 January 2009 в 12:00
поделиться

2 ответа

Как насчет записи

var people = repository.Find<Employee>();

Это сохраняет тот же объем ввода, но по-другому.

6
ответ дан 6 December 2019 в 08:46
поделиться

Как я мог назвать метод Находки без specififying U?

Вы не можете.

К сожалению, разрешение перегрузки общего метода C# не соответствует на основе возвращаемых значений.

Посмотрите сообщение в блоге Eric Lippert об этом: Вывод типа Возврата C# 3.0 Не Работает Над Группами Метода

Но один простой способ записать это использует var ключевое слово.

var employees = repository.Find<Employee>();
15
ответ дан 6 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: