Files
deb-python-cassandra-driver/docs/api/cassandra/cqlengine/models.rst
Alan Boudreault bc534c4731 Connections docs
2016-09-08 11:14:53 -04:00

6.4 KiB

cassandra.cqlengine.models - Table models for object mapping

cassandra.cqlengine.models

Model

Model(**kwargs)

The initializer creates an instance of the model. Pass in keyword arguments for columns you've defined on the model.

class Person(Model):
    id = columns.UUID(primary_key=True)
    first_name  = columns.Text()
    last_name = columns.Text()

person = Person(first_name='Blake', last_name='Eggleston')
person.first_name  #returns 'Blake'
person.last_name  #returns 'Eggleston'

Model attributes define how the model maps to tables in the database. These are class variables that should be set when defining Model deriviatives.

__abstract__

__table_name__

__table_name_case_sensitive__

__keyspace__

__connection__

__default_ttl__

Will be deprecated in release 4.0. You can set the default ttl by configuring the table __options__. See ttl-change for more details.

__discriminator_value__

See model_inheritance for usage examples.

Each table can have its own set of configuration options, including compaction. Unspecified, these default to sensible values in the server. To override defaults, set options using the model __options__ attribute, which allows options specified a dict.

When a table is synced, it will be altered to match the options set on your table. This means that if you are changing settings manually they will be changed back on resync.

Do not use the options settings of cqlengine if you want to manage your compaction settings manually.

See the list of supported table properties for more information.

__options__

For example:

class User(Model):
    __options__ = {'compaction': {'class': 'LeveledCompactionStrategy',
                                  'sstable_size_in_mb': '64',
                                  'tombstone_threshold': '.2'},
                   'read_repair_chance': '0.5',
                   'comment': 'User data stored here'}

    user_id = columns.UUID(primary_key=True)
    name = columns.Text()

or :

class TimeData(Model):
    __options__ = {'compaction': {'class': 'SizeTieredCompactionStrategy',
                                  'bucket_low': '.3',
                                  'bucket_high': '2',
                                  'min_threshold': '2',
                                  'max_threshold': '64',
                                  'tombstone_compaction_interval': '86400'},
                   'gc_grace_seconds': '0'}

__compute_routing_key__

The base methods allow creating, storing, and querying modeled objects.

create

if_not_exists()

Check the existence of an object before insertion. The existence of an object is determined by its primary key(s). And please note using this flag would incur performance cost.

If the insertion isn't applied, a ~cassandra.cqlengine.query.LWTException is raised.

try:
    TestIfNotExistsModel.if_not_exists().create(id=id, count=9, text='111111111111')
except LWTException as e:
    # handle failure case
    print e.existing  # dict containing LWT result fields

This method is supported on Cassandra 2.0 or later.

if_exists()

Check the existence of an object before an update or delete. The existence of an object is determined by its primary key(s). And please note using this flag would incur performance cost.

If the update or delete isn't applied, a ~cassandra.cqlengine.query.LWTException is raised.

try:
    TestIfExistsModel.objects(id=id).if_exists().update(count=9, text='111111111111')
except LWTException as e:
    # handle failure case
    pass

This method is supported on Cassandra 2.0 or later.

save

update

iff(**values)

Checks to ensure that the values specified are correct on the Cassandra cluster. Simply specify the column(s) and the expected value(s). As with if_not_exists, this incurs a performance cost.

If the insertion isn't applied, a ~cassandra.cqlengine.query.LWTException is raised.

t = TestTransactionModel(text='some text', count=5)
try:
     t.iff(count=5).update('other text')
except LWTException as e:
    # handle failure case
    print e.existing # existing object

get

filter

all

delete

batch(batch_object)

Sets the batch object to run instance updates and inserts queries with.

See /cqlengine/batches for usage examples

timeout

timestamp(timedelta_or_datetime)

Sets the timestamp for the query

ttl(ttl_in_sec)

Sets the ttl values to run instance updates and inserts queries with.

using(keyspace=None, connection=None)

Change the context on the fly of the model instance (keyspace, connection)

column_family_name

Models also support dict-like access:

len(m)

Returns the number of columns defined in the model

m[col_name]

Returns the value of column col_name

m[col_name] = value

Set m[col_name] to value

keys

values

items