2017-03-07 27 views
0

比方说,我有卡桑德拉表定义是这样的:有道插入迭代数据到卡桑德拉使用Python

CREATE TABLE IF NOT EXISTS {} (
      user_id bigint , 
      username text, 
      age int, 
      PRIMARY KEY (user_id) 
     ); 

我在每个列表的大小相同咱们1 000 000记录3名单。它是一个很好的做法,将数据插入使用一个循环是这样的:

​​

回答

1

准备并发执行语句将是您最好的选择。驱动程序提供了用于并发执行具有参数序列的语句的实用程序功能,就像您对列表所做的一样:execute_concurrent_with_args

Zipping您的列表将一起生成适合输入到该函数的参数元组序列。

事情是这样的:

prepared = session.prepare("INSERT INTO table (user_id, username, age) VALUES (?, ?, ?)") 
execute_concurrent_with_args(session, prepared, zip(user_ids, username, age)) 
1

它可能是一个好主意,通过观察python的司机越来越started guide启动。如果你已经看到了,然后道歉,但我认为这值得一提。

一般来说你创建会话对象,然后做你的循环内的插入,可能使用像一个准备好的声明(关于进一步贬低这一入门Page)也herehere

的例子上述页面的使用这个作为一个很好的起点

user_lookup_stmt = session.prepare("SELECT * FROM users WHERE user_id=?") 

users = [] 
for user_id in user_ids_to_query: 
    user = session.execute(user_lookup_stmt, [user_id]) 
    users.append(user) 

您也可以找到this blog与蟒蛇司机谈好时的吞吐量有助于

你可能会发现python driver github page是一个有用的资源,尤其是我发现这个例子使用了准备好的语句here,它可能也会帮助你。