Skip to content

Database Examples

James Barrow edited this page Jul 5, 2016 · 2 revisions

Get the database you wish to use from the container. In these examples we are using the public database.

public_cloud_database = container.public_cloud_database

Save a new record

record = Record()
record.record_type = 'Animal'
fields = {
    'species': 'Dog',
    'name': 'Scruffy',
    'age': 3
}
record.fields = CKValue.fields(fields)

result = public_cloud_database.save_records([record])
if result.is_failure is True:
    ck.logger.error(
        "Failed to save record: %s" % result.error.server_error_code
    )
elif result.is_success is True:
    ck.logger.info(
        "Saved record successfully!"
    )
    record = result.value[0]

> Saved record successfully!

Fetch the record

result = public_cloud_database.fetch_records([record])
if result.is_failure is True:
    ck.logger.error(
        "Failed to fetch records: %s" % result.error.server_error_code
    )
elif result.is_success is True:
    ck.logger.info(
        "Fetched records successfully!"
    )
    record = result.value[0]

> Fetched records successfully!

Modify and re-save the record

record.fields['age'] = CKValue(4).json()
result = public_cloud_database.save_records([record])
if result.is_failure is True:
    ck.logger.error(
        "Failed to modify records: %s" % result.error.server_error_code
    )
elif result.is_success is True:
    record = result.value[0]
    ck.logger.info(
        "Modified records successfully! Age: %s" % (
            CKValue(json=record.fields['age']).value
        )
    )

> Modified records successfully! Age: 4

Query the records

query_filter = Filter()
query_filter.comparator = CloudKit.GREATER_THAN
query_filter.field_name = 'age'
query_filter.field_value = CKValue(3).json()

query_sort_descriptor = SortDescriptor()
query_sort_descriptor.field_name = 'name'
query_sort_descriptor.ascending = False

query = Query()
query.record_type = 'Animal'
query.filter_by = [query_filter]
query.sort_by = [query_sort_descriptor]
result = public_cloud_database.perform_query(query)
if result.is_failure is True:
    ck.logger.error(
        "Failed to query records: %s" % result.error.server_error_code
    )
elif result.is_success is True:
    ck.logger.info(
        "Queried records successfully! %s" % result.value[0]
    )

> Queried records successfully! [<cloudkitpy.datatypes.Record instance>]

Delete the record

result = public_cloud_database.delete_records([record])
if result.is_failure is True:
    ck.logger.error(
        "Failed to delete records: %s" % result.error.server_error_code
    )
elif result.is_success is True:
    ck.logger.info(
        "Deleted records successfully!"
    )

> Deleted records successfully!

Clone this wiki locally