| Object Mapper |
| ============= |
| |
| cqlengine is the Cassandra CQL 3 Object Mapper packaged with this driver |
| |
| :ref:`Jump to Getting Started <getting-started>` |
| |
| Contents |
| -------- |
| :doc:`cqlengine/upgrade_guide` |
| For migrating projects from legacy cqlengine, to the integrated product |
| |
| :doc:`cqlengine/models` |
| Examples defining models, and mapping them to tables |
| |
| :doc:`cqlengine/queryset` |
| Overview of query sets and filtering |
| |
| :doc:`cqlengine/batches` |
| Working with batch mutations |
| |
| :doc:`cqlengine/connections` |
| Working with multiple sessions |
| |
| :ref:`API Documentation <om_api>` |
| Index of API documentation |
| |
| :doc:`cqlengine/third_party` |
| High-level examples in Celery and uWSGI |
| |
| :doc:`cqlengine/faq` |
| |
| .. toctree:: |
| :hidden: |
| |
| cqlengine/upgrade_guide |
| cqlengine/models |
| cqlengine/queryset |
| cqlengine/batches |
| cqlengine/connections |
| cqlengine/third_party |
| cqlengine/faq |
| |
| .. _getting-started: |
| |
| Getting Started |
| --------------- |
| |
| .. code-block:: python |
| |
| import uuid |
| from cassandra.cqlengine import columns |
| from cassandra.cqlengine import connection |
| from datetime import datetime |
| from cassandra.cqlengine.management import sync_table |
| from cassandra.cqlengine.models import Model |
| |
| #first, define a model |
| class ExampleModel(Model): |
| example_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)... |
| # see https://docs.datastax.com/en/developer/python-driver/latest/api/cassandra/cluster.html for options |
| # the list of hosts will be passed to create a Cluster() instance |
| connection.setup(['127.0.0.1'], "cqlengine", protocol_version=3) |
| |
| #...and create your CQL 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 |
| >>> for instance in q: |
| >>> print(instance.description) |
| example5 |
| example6 |
| example7 |
| example8 |
| |
| #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 |
| >>> for instance in q2: |
| >>> print(instance.description) |
| example5 |