为了在Cassandra中插入随机值,我输入了一个小的demo循环,但是只有最后一条记录被持久化到数据库中。我正在使用datastax及其对象建模库中的cassandra驱动程序。Cassandra的版本是3.7和python3.4。你知道我做错什么了吗?在
#!/usr/bin/env python
import datetime
import uuid
from random import randint, uniform
from cassandra.cluster import Cluster
from cassandra.cqlengine import connection, columns
from cassandra.cqlengine.management import sync_table
from cassandra.cqlengine.models import Model
from cassandra.cqlengine.query import BatchQuery
class TestTable(Model):
_table_name = 'test_table'
key = columns.UUID(primary_key=True, default=uuid.uuid4())
type = columns.Integer(index=True)
value = columns.Float(required=False)
created_time = columns.DateTime(default=datetime.datetime.now())
def main():
connection.setup(['127.0.0.1'], 'test', protocol_version = 3)
sync_table(TestTable)
for _ in range(10):
type = randint(1, 3)
value = uniform(-10, 10)
row = TestTable.create(type=type, value=value)
print("Inserted row: ", row.type, row.value)
print("Done inserting")
q = TestTable.objects.count()
print("We have inserted " + str(q) + " rows.")
if __name__ == "__main__":
main()
非常感谢!在
您需要使用save方法。在
http://cqlengine.readthedocs.io/en/latest/topics/models.html#cqlengine.models.Model.save
问题在于键列的定义:
对于默认值,它将调用
uuid.uuid4
函数一次,并将该结果用作将来所有插入的默认值。因为这是你的主键,所有10次写入都将发生在同一个主键上。在相反,请去掉括号,这样您只需传递对
^{pr2}$uuid.uuid4
的引用,而不是调用它:现在,每次创建一行时,都会得到一个新的惟一UUID值,因此在Cassandra中也会有一个新行。在
相关问题 更多 >
编程相关推荐