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)
= columns.Text()
first_name = columns.Text()
last_name
= Person(first_name='Blake', last_name='Eggleston')
person #returns 'Blake'
person.first_name #returns 'Eggleston' person.last_name
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):
= {'compaction': {'class': 'LeveledCompactionStrategy',
__options__ 'sstable_size_in_mb': '64',
'tombstone_threshold': '.2'},
'read_repair_chance': '0.5',
'comment': 'User data stored here'}
= columns.UUID(primary_key=True)
user_id = columns.Text() name
or :
class TimeData(Model):
= {'compaction': {'class': 'SizeTieredCompactionStrategy',
__options__ '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:
id=id, count=9, text='111111111111')
TestIfNotExistsModel.if_not_exists().create(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:
id=id).if_exists().update(count=9, text='111111111111')
TestIfExistsModel.objects(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.
= TestTransactionModel(text='some text', count=5)
t try:
=5).update('other text')
t.iff(countexcept 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