cqlengine is a Cassandra CQL 3 Object Mapper for Python
Users of versions < 0.16, the default keyspace 'cqlengine' has been removed. Please read this before upgrading:Breaking Changes
pip install cqlengine
#first, define a modelimportuuidfromcqlengineimportcolumnsfromcqlengine.modelsimportModelclassExampleModel(Model):
read_repair_chance=0.05# optional - defaults to 0.1example_id=columns.UUID(primary_key=True, default=uuid.uuid4)
example_type=columns.Integer(index=True)
created_at=columns.DateTime()
description=columns.Text(required=False)
#next, setup the connection to your cassandra server(s) and the default keyspace...>>>fromcqlengineimportconnection>>>connection.setup(['127.0.0.1'], "cqlengine")
# or if you're still on cassandra 1.2>>>connection.setup(['127.0.0.1'], "cqlengine", protocol_version=1)
# create your keyspace. This is, in general, not what you want in production# see https://cassandra.apache.org/doc/cql3/CQL.html#createKeyspaceStmt for options>>>create_keyspace("cqlengine", "SimpleStrategy", 1)
#...and create your CQL table>>>fromcqlengine.managementimportsync_table>>>sync_table(ExampleModel)
#now we can create some rows:>>>em1=ExampleModel.create(example_type=0, description="example1", created_at=datetime.now())
>>>em2=ExampleModel.create(example_type=0, description="example2", created_at=datetime.now())
>>>em3=ExampleModel.create(example_type=0, description="example3", created_at=datetime.now())
>>>em4=ExampleModel.create(example_type=0, description="example4", created_at=datetime.now())
>>>em5=ExampleModel.create(example_type=1, description="example5", created_at=datetime.now())
>>>em6=ExampleModel.create(example_type=1, description="example6", created_at=datetime.now())
>>>em7=ExampleModel.create(example_type=1, description="example7", created_at=datetime.now())
>>>em8=ExampleModel.create(example_type=1, description="example8", created_at=datetime.now())
#and now we can run some queries against our table>>>ExampleModel.objects.count()
8>>>q=ExampleModel.objects(example_type=1)
>>>q.count()
4>>>forinstanceinq:
>>>printinstance.descriptionexample5example6example7example8#here we are applying additional filtering to an existing query#query objects are immutable, so calling filter returns a new#query object>>>q2=q.filter(example_id=em5.example_id)
>>>q2.count()
1>>>forinstanceinq2:
>>>printinstance.descriptionexample5If you'd like to contribute to cqlengine, please read the contributor guidelines
cqlengine was developed primarily by (Blake Eggleston)blakeeggleston and Jon Haddad, with contributions from several others in the community.