Read
Jump to the Code block for a combined complete example.
Setup
The following examples will use the setup and record below to illustrate single record data retreival from an Aerospike database.
import aerospike
# Define host configurationconfig = { 'hosts': [ ('127.0.0.1', 3000) ]}# Establishes a connection to the serverclient = aerospike.client(config).connect()
# Creates a key with the namespace "sandbox", set "ufodata", and user key 5001key = ('sandbox', 'ufodata', 5001)
The record structure:
+------+----------+----------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------+| PK | occurred | reported | posted | report | location |+------+----------+----------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------+| 5001 | 20220531 | 20220601 | 20220601 | MAP('{"shape":["circle", "flash", "disc"], "summary":"Large flying disc flashed in the sky above the student union. Craziest thing I've ever seen!", "city":"Ann Arbor", "state":"Michigan", "duration":"5 minutes"}') | GeoJSON('{"type":"Point","coordinates":[42.2808,83.743]}') |+------+----------+----------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------+
Policies
Instead of using the default read policies, we can set them on a per command basis.
The following example creates a new read policy and sets the socket timeout for the command.
# Create new read policypolicy = {'socket_timeout': 300}
Read a record
Record exists
Checking record existence is faster than getting the record because it only needs to look at the primary index.
# Returns key and metadata if exists, None if not(key, meta) = client.exists(key, policy=policy)
# Do somethingexists = Trueif meta == None: exists = Falseprint('Exists: ', exists)
# Close the connection to the serverclient.close()
Record metadata only
Read record metadata (generation and expiration information) without reading the bins for a specified key.
# Get record metadata(key, meta) = client.exists(key, policy=policy)
# Do somethingprint('Record: ', meta)
# Close the connection to the serverclient.close()
Whole record
Read the record metadata and all bins for a specified key.
# Get whole record(key_, meta, bins) = client.get(key, policy=policy)
# Do somethingprint('Record: ', bins)
# Close the connection to the serverclient.close()
Specific bins
Read the record metadata and the report
and location
bins from the record.
# Get bins 'report' and 'location'(key_, meta, bins) = client.select(key, ("report", "location"), policy=policy)
# Do somethingprint('Record: ', bins)
# Close the connection to the serverclient.close()
Code block
Expand this section for a single code block to read a record
import aerospike
# Define host configurationconfig = { 'hosts': [ ('127.0.0.1', 3000) ]}# Establishes a connection to the serverclient = aerospike.client(config).connect()
# Creates a key with the namespace "sandbox", set "ufodata", and user key 5001key = ('sandbox', 'ufodata', 5001)
# Create new read policypolicy = {'socket_timeout': 300}
# Get whole record(key_, meta, bins) = client.get(key, policy=policy)
# Do somethingprint('Record: ', bins)
# Close the connection to the serverclient.close()