我正在为Apache Cassandra使用插件DataStax Python驱动程序。
我想从数据库中读取100行,然后在更改一个值后再将它们插入数据库。我不想错过以前的记录。
我知道如何获取行:
rows = session.execute('SELECT * FROM columnfamily LIMIT 100;')
for myrecord in rows:
print(myrecord.timestamp)
我知道如何在数据库中插入新行:
stmt = session.prepare('''
INSERT INTO columnfamily (rowkey, qualifier, info, act_date, log_time)
VALUES (, ?, ?, ?, ?)
IF NOT EXISTS
''')
results = session.execute(stmt, [arg1, arg2, ...])
我的问题是:
总结: 有没有办法获取行,从每个行修改一个值,然后将这些行插入数据库而不仅使用CQL?
答案 0 :(得分:0)
首先,您只需要从Cassandra中选择所需的列 - 传输数据的速度会更快。您需要包含要更改的主键+列的所有列。
获取数据后,您可以使用UPDATE command仅更新必要的列(文档中的示例):
UPDATE cycling.cyclist_name
SET comments ='='Rides hard, gets along with others, a real winner'
WHERE id = fb372533-eb95-4bb4-8685-6ef61e994caa
您还可以使用预准备语句使其更具效果......
但要小心 - UPDATE
& CQL中的INSERT
实际上是UPSERT,因此如果您更改属于主键的列,那么它将创建新的条目......