Create
Jump to the Code block for a combined complete example.
Setup
The following examples will use the setup and record structure below to illustrate single record creation in an Aerospike database.
import aerospikefrom aerospike import GeoJSON
# Define host configurationconfig = { 'hosts': [ ('127.0.0.1', 3000) ]}# Establishes a connection to the serverclient = aerospike.client(config).connect()
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
Write policies define additional semantics for the write operation. Instead of using the default write policies, we can set them on a per command basis.
The following example creates a new write policy container object that sets the send key policy to true
. This stores the user defined key with the record, and returns it with read commands.
# Create new write policywrite_policy = {'key': aerospike.POLICY_KEY_SEND}
Key
The key is a tuple made up of: (namespace, set, user defined key)
.
The following example creates a key using the sandbox
namespace, ufodata
set, and user defined key 5001
.
# Create the record keykey = ('sandbox', 'ufodata', 5001)
Create a record
A record is the basic unit of storage in the database. A record is composed of: (key, metadata, bins)
.
Setup
Expand the block below to see the creation of the variables used in the write example below.
View the data creation
# Create the report mapreportMap = { 'city': 'Ann Arbor', 'state': 'Michigan', 'shape': ['circle', 'flash', 'disc'], 'duration': '5 minutes', 'summary': "Large flying disc flashed in the sky above the student union. Craziest thing I've ever seen!"}
# Format coordinates as a GeoJSON stringgeoLoc = GeoJSON({'type':'Point', 'coordinates':[42.2808,83.7430]})
Write
The following example shows the creation of the bins and the writing of the record to the database.
# Create the binsbins = { 'occurred': 20220531, 'reported': 20220601, 'posted': 20220601, # reportMap defined in the section above 'report': reportMap, # geoLoc defined in the section above 'location': geoLoc}
# Write the record to Aerospikeclient.put(key, bins, policy=write_policy)
# Close the connection to the serverclient.close()
Code block
Expand this section for a single code block to create a record
import aerospikefrom aerospike import GeoJSON
# Define host configurationconfig = { 'hosts': [ ('127.0.0.1', 3000) ]}# Establishes a connection to the serverclient = aerospike.client(config).connect()
# Create new write policywrite_policy = {'key': aerospike.POLICY_KEY_SEND}
# Create the record keykey = ('sandbox', 'ufodata', 5001)
# Create the report mapreportMap = { 'city': 'Ann Arbor', 'state': 'Michigan', 'shape': ['circle', 'flash', 'disc'], 'duration': '5 minutes', 'summary': "Large flying disc flashed in the sky above the student union. Craziest thing I've ever seen!"}
# Format coordinates as a GeoJSON stringgeoLoc = GeoJSON({'type':'Point', 'coordinates':[42.2808,83.7430]})
# Create the binsbins = { 'occurred': 20220531, 'reported': 20220601, 'posted': 20220601, # reportMap defined in the section above 'report': reportMap, # geoLoc defined in the section above 'location': geoLoc}
# Write the record to Aerospikeclient.put(key, bins, policy=write_policy)
# Close the connection to the serverclient.close()