Python 中的 Cassandra 批量插入

use*_*774 4 python cassandra

我需要做一个批次INSERTCassandra使用Python。我正在使用最新的Datastaxpython 驱动程序。

这些INSERTS是将在同一行中的成批列。我将有很多行要插入,但数据块将在同一行中。

我可以按照这篇文章INSERTS中的for loop描述进行单独的操作: 使用 Python Cassandra 模块 进行参数化查询我正在使用参数化查询,值如该示例所示。

这没有帮助: 如何在 cassandra 中多插入行

我不清楚如何组装参数化的 INSERT:

BEGIN BATCH  
  INSERT(query values1)  
  INSERT(query values2)  
  ...  
APPLY BATCH;  
cursor.execute(batch_query)  
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?这会加快我的速度INSERTS吗?我必须做数百万。甚至数千也需要太长时间。我发现了一些 Java 信息​​:http : //www.datastax.com/dev/blog/client-side-improvements-in-cassandra-2-0

小智 5

从驱动程序的 2.0.0 版开始,有一个BatchStatement构造. 如果使用 ORM,您还可以使用BatchQueryclass

cluster = Cluster([sever_ip])
session = cluster.connect(keyspace)
insert_user = session.prepare('INSERT INTO table_name (id,name) VALUES (?, ?)')
batch = BatchStatement(consistency_level=ConsistencyLevel.QUORUM)
for i,j in some_value:
    try:
      batch.add(insert_user,(i,j))
      logger.info('Data Inserted into the table')
    except Exception as e:
      logger.error('The cassandra error: {}'.format(e))
session.execute(batch)
Run Code Online (Sandbox Code Playgroud)