2017-03-07 28 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,它可能也會幫助你。