Files
deb-python-cassandra-driver/docs/api/cassandra/cqlengine/models.rst
2015-02-11 14:42:00 -06:00

6.5 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__

__keyspace__

__default_ttl__

__polymorphic_key__

__discriminator_value__

See model_inheritance for usage examples.

Each table can have its own set of configuration options. These can be specified on a model with the following attributes:

See the list of supported table properties for more information.

__bloom_filter_fp_chance

__caching__

__comment__

__dclocal_read_repair_chance__

__default_time_to_live__

__gc_grace_seconds__

__index_interval__

__memtable_flush_period_in_ms__

__populate_io_cache_on_flush__

__read_repair_chance__

__replicate_on_write__

Model presently supports specifying compaction options via class attributes. cqlengine will only use your compaction options if you have a strategy set. When a table is synced, it will be altered to match the compaction 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 compaction settings of cqlengine if you want to manage your compaction settings manually.

cqlengine supports all compaction options as of Cassandra 1.2.8.

These attibutes will likely be replaced by a single options string in a future version, and are therefore deprecated.

__compaction_bucket_high__

__compaction_bucket_low__

__compaction_max_compaction_threshold__

__compaction_min_compaction_threshold__

__compaction_min_sstable_size__

__compaction_sstable_size_in_mb__

__compaction_tombstone_compaction_interval__

__compaction_tombstone_threshold__

For example:

class User(Model):
    __compaction__ = cqlengine.LeveledCompactionStrategy
    __compaction_sstable_size_in_mb__ = 64
    __compaction_tombstone_threshold__ = .2

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

or for SizeTieredCompaction:

class TimeData(Model):
    __compaction__ = SizeTieredCompactionStrategy
    __compaction_bucket_low__ = .3
    __compaction_bucket_high__ = 2
    __compaction_min_threshold__ = 2
    __compaction_max_threshold__ = 64
    __compaction_tombstone_compaction_interval__ = 86400

Tables may use LeveledCompactionStrategy or SizeTieredCompactionStrategy. Both options are available in the top level cqlengine module. To reiterate, you will need to set your __compaction__ option explicitly in order for cqlengine to handle any of your settings.

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 didn't applied, a LWTException exception would be raised.

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

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 LWTException is raised

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

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.

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