脓性肌松解术

2024-04-27 08:37:52 发布

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

我正在做以下任务。 迭代列表的列表。 将每个内部列表转换为一个对象,并将它们添加到一个批中,以插入cassandra。跟踪该批产品的数量不超过150项。你知道吗

s = session.prepare("INSERT INTO {} (a, b, c) VALUES (?, ?, ?)".format(table))
batch = BatchStatement(consistency_level=ConsistencyLevel.QUORUM)
count = 0
for lst in list:
   for i in lst:
      if count == 150:
         magic = Magic(i[0], i[1], content_id)
         batch.add(s, (magic.a, magic.b, magic.c))
         session.execute(batch)
         batch = BatchStatement(consistency_level=ConsistencyLevel.QUORUM)
         count = 0
        else:
            for i in lst:
                magic = Magic(i[0], i[1], content_id)
                    batch.add(s, (magic.a, magic.b, magic.c))
                count += 1
    session.execute(batch)

外部列表有未指定数量的项,但内部列表始终有两个项。你知道吗

这段代码非常冗长。有没有一个更像Python的方法来做到这一点。你知道吗


Tags: in列表for数量sessioncountmagicbatch
1条回答
网友
1楼 · 发布于 2024-04-27 08:37:52

我将公共代码移出了if块:

s = session.prepare("INSERT INTO {} (a, b, c) VALUES (?, ?, ?)".format(table))
batch = BatchStatement(consistency_level=ConsistencyLevel.QUORUM)
count = 0
for lst in list:
    for i in lst:
        magic = Magic(i[0], i[1], content_id)
        batch.add(s, (magic.a, magic.b, magic.c))
        count += 1
        if count == 150:
            session.execute(batch)
            batch = BatchStatement(consistency_level=ConsistencyLevel.QUORUM)
            count = 0
session.execute(batch)

我还删除了看起来不必要的第二个for循环。您可能希望在最后一次调用session.execute之前添加对count == 0的检查。你知道吗

警告

永远不要使用list作为变量名。^{}是一个内置类。你知道吗

相关问题 更多 >