SDB DB Reference¶
This module offers an ORM-like layer on top of SimpleDB.
boto.sdb.db¶
boto.sdb.db.blob¶
boto.sdb.db.key¶
boto.sdb.db.manager¶
-
boto.sdb.db.manager.
get_manager
(cls)¶ Returns the appropriate Manager class for a given Model class. It does this by looking in the boto config for a section like this:
[DB] db_type = SimpleDB db_user = <aws access key id> db_passwd = <aws secret access key> db_name = my_domain [DB_TestBasic] db_type = SimpleDB db_user = <another aws access key id> db_passwd = <another aws secret access key> db_name = basic_domain db_port = 1111
The values in the DB section are “generic values” that will be used if nothing more specific is found. You can also create a section for a specific Model class that gives the db info for that class. In the example above, TestBasic is a Model subclass.
boto.sdb.db.manager.pgmanager¶
Note
This module requires psycopg2 to be installed in the Python path.
boto.sdb.db.manager.sdbmanager¶
-
class
boto.sdb.db.manager.sdbmanager.
SDBConverter
(manager)¶ Responsible for converting base Python types to format compatible with underlying database. For SimpleDB, that means everything needs to be converted to a string when stored in SimpleDB and from a string when retrieved.
To convert a value, pass it to the encode or decode method. The encode method will take a Python native value and convert to DB format. The decode method will take a DB format value and convert it to Python native format. To find the appropriate method to call, the generic encode/decode methods will look for the type-specific method by searching for a method called “encode_<type name>” or “decode_<type name>”.
-
decode
(item_type, value)¶
-
decode_blob
(value)¶
-
decode_bool
(value)¶
-
decode_date
(value)¶
-
decode_datetime
(value)¶
-
decode_float
(value)¶
-
decode_int
(value)¶
-
decode_list
(prop, value)¶
-
decode_long
(value)¶
-
decode_map
(prop, value)¶
-
decode_map_element
(item_type, value)¶ Decode a single element for a map
-
decode_prop
(prop, value)¶
-
decode_reference
(value)¶
-
decode_string
(value)¶ Decoding a string is really nothing, just return the value as-is
-
decode_time
(value)¶ converts strings in the form of HH:MM:SS.mmmmmm (created by datetime.time.isoformat()) to datetime.time objects.
Timzone-aware strings (“HH:MM:SS.mmmmmm+HH:MM”) won’t be handled right now and will raise TimeDecodeError.
-
encode
(item_type, value)¶
-
encode_blob
(value)¶
-
encode_bool
(value)¶
-
encode_date
(value)¶
-
encode_datetime
(value)¶
-
encode_float
(value)¶
-
encode_int
(value)¶
-
encode_list
(prop, value)¶
-
encode_long
(value)¶
-
encode_map
(prop, value)¶
-
encode_prop
(prop, value)¶
-
encode_reference
(value)¶
-
encode_string
(value)¶ Convert ASCII, Latin-1 or UTF-8 to pure Unicode
-
encode_time
(value)¶
-
-
class
boto.sdb.db.manager.sdbmanager.
SDBManager
(cls, db_name, db_user, db_passwd, db_host, db_port, db_table, ddl_dir, enable_ssl, consistent=None)¶ -
count
(cls, filters, quick=True, sort_by=None, select=None)¶ Get the number of results that would be returned in this query
-
decode_value
(prop, value)¶
-
delete_key_value
(obj, name)¶
-
delete_object
(obj)¶
-
domain
¶
-
encode_value
(prop, value)¶
-
get_blob_bucket
(bucket_name=None)¶
-
get_key_value
(obj, name)¶
-
get_object
(cls, id, a=None)¶
-
get_object_from_id
(id)¶
-
get_property
(prop, obj, name)¶
-
get_raw_item
(obj)¶
-
get_s3_connection
()¶
-
load_object
(obj)¶
-
query
(query)¶
-
query_gql
(query_string, *args, **kwds)¶
-
save_object
(obj, expected_value=None)¶
-
sdb
¶
-
set_key_value
(obj, name, value)¶
-
set_property
(prop, obj, name, value)¶
-
-
exception
boto.sdb.db.manager.sdbmanager.
TimeDecodeError
¶
boto.sdb.db.manager.xmlmanager¶
-
class
boto.sdb.db.manager.xmlmanager.
XMLConverter
(manager)¶ Responsible for converting base Python types to format compatible with underlying database. For SimpleDB, that means everything needs to be converted to a string when stored in SimpleDB and from a string when retrieved.
To convert a value, pass it to the encode or decode method. The encode method will take a Python native value and convert to DB format. The decode method will take a DB format value and convert it to Python native format. To find the appropriate method to call, the generic encode/decode methods will look for the type-specific method by searching for a method called “encode_<type name>” or “decode_<type name>”.
-
decode
(item_type, value)¶
-
decode_bool
(value)¶
-
decode_datetime
(value)¶
-
decode_int
(value)¶
-
decode_long
(value)¶
-
decode_password
(value)¶
-
decode_prop
(prop, value)¶
-
decode_reference
(value)¶
-
encode
(item_type, value)¶
-
encode_bool
(value)¶
-
encode_datetime
(value)¶
-
encode_int
(value)¶
-
encode_long
(value)¶
-
encode_password
(value)¶
-
encode_prop
(prop, value)¶
-
encode_reference
(value)¶
-
get_text_value
(parent_node)¶
-
-
class
boto.sdb.db.manager.xmlmanager.
XMLManager
(cls, db_name, db_user, db_passwd, db_host, db_port, db_table, ddl_dir, enable_ssl)¶ -
decode_value
(prop, value)¶
-
delete_key_value
(obj, name)¶
-
delete_object
(obj)¶
-
encode_value
(prop, value)¶
-
get_doc
()¶
-
get_key_value
(obj, name)¶
-
get_list
(prop_node, item_type)¶
-
get_object
(cls, id)¶
-
get_object_from_doc
(cls, id, doc)¶
-
get_property
(prop, obj, name)¶
-
get_props_from_doc
(cls, id, doc)¶ Pull out the properties from this document Returns the class, the properties in a hash, and the id if provided as a tuple :return: (cls, props, id)
-
get_raw_item
(obj)¶
-
get_s3_connection
()¶
-
load_object
(obj)¶
-
marshal_object
(obj, doc=None)¶
-
new_doc
()¶
-
query
(cls, filters, limit=None, order_by=None)¶
-
query_gql
(query_string, *args, **kwds)¶
-
reset
()¶
-
save_list
(doc, items, prop_node)¶
-
save_object
(obj, expected_value=None)¶ Marshal the object and do a PUT
-
set_key_value
(obj, name, value)¶
-
set_property
(prop, obj, name, value)¶
-
unmarshal_object
(fp, cls=None, id=None)¶
-
unmarshal_props
(fp, cls=None, id=None)¶ Same as unmarshalling an object, except it returns from “get_props_from_doc”
-
boto.sdb.db.model¶
-
class
boto.sdb.db.model.
Expando
(id=None, **kw)¶
-
class
boto.sdb.db.model.
Model
(id=None, **kw)¶ -
classmethod
all
(limit=None, next_token=None)¶
-
delete
()¶
-
delete_attributes
(attrs)¶ Delete just these attributes, not the whole object.
Parameters: attrs (list) – Attributes to save, as a list of string names Returns: self Return type: boto.sdb.db.model.Model
-
classmethod
find
(limit=None, next_token=None, **params)¶
-
classmethod
find_property
(prop_name)¶
-
classmethod
find_subclass
(name)¶ Find a subclass with a given name
-
classmethod
from_xml
(fp)¶
-
classmethod
get_by_id
(ids=None, parent=None)¶
-
classmethod
get_by_ids
(ids=None, parent=None)¶
-
classmethod
get_by_key_name
(key_names, parent=None)¶
-
classmethod
get_lineage
()¶
-
classmethod
get_or_insert
(key_name, **kw)¶
-
classmethod
get_xmlmanager
()¶
-
id
= None¶
-
key
()¶
-
classmethod
kind
()¶
-
load
()¶
-
classmethod
properties
(hidden=True)¶
-
put
(expected_value=None)¶ Save this object as it is, with an optional expected value
Parameters: expected_value (tuple or list) – Optional tuple of Attribute, and Value that must be the same in order to save this object. If this condition is not met, an SDBResponseError will be raised with a Confict status code. Returns: This object Return type: boto.sdb.db.model.Model
-
put_attributes
(attrs)¶ Save just these few attributes, not the whole object
Parameters: attrs (dict) – Attributes to save, key->value dict Returns: self Return type: boto.sdb.db.model.Model
-
reload
()¶
-
save
(expected_value=None)¶ Save this object as it is, with an optional expected value
Parameters: expected_value (tuple or list) – Optional tuple of Attribute, and Value that must be the same in order to save this object. If this condition is not met, an SDBResponseError will be raised with a Confict status code. Returns: This object Return type: boto.sdb.db.model.Model
-
save_attributes
(attrs)¶ Save just these few attributes, not the whole object
Parameters: attrs (dict) – Attributes to save, key->value dict Returns: self Return type: boto.sdb.db.model.Model
-
set_manager
(manager)¶
-
to_dict
()¶
-
to_xml
(doc=None)¶
-
classmethod
-
class
boto.sdb.db.model.
ModelMeta
(name, bases, dict)¶ Metaclass for all Models
boto.sdb.db.property¶
-
class
boto.sdb.db.property.
BlobProperty
(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, unique=False)¶ -
data_type
¶ alias of
Blob
-
type_name
= 'blob'¶
-
-
class
boto.sdb.db.property.
BooleanProperty
(verbose_name=None, name=None, default=False, required=False, validator=None, choices=None, unique=False)¶ -
-
empty
(value)¶
-
type_name
= 'Boolean'¶
-
-
class
boto.sdb.db.property.
CalculatedProperty
(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, calculated_type=<type 'int'>, unique=False, use_method=False)¶ -
get_value_for_datastore
(model_instance)¶
-
-
class
boto.sdb.db.property.
DateProperty
(verbose_name=None, auto_now=False, auto_now_add=False, name=None, default=None, required=False, validator=None, choices=None, unique=False)¶ -
data_type
¶ alias of
date
-
default_value
()¶
-
get_value_for_datastore
(model_instance)¶
-
now
()¶
-
type_name
= 'Date'¶
-
validate
(value)¶
-
-
class
boto.sdb.db.property.
DateTimeProperty
(verbose_name=None, auto_now=False, auto_now_add=False, name=None, default=None, required=False, validator=None, choices=None, unique=False)¶ -
data_type
¶ alias of
datetime
-
default_value
()¶
-
get_value_for_datastore
(model_instance)¶
-
now
()¶
-
type_name
= 'DateTime'¶
-
validate
(value)¶
-
-
class
boto.sdb.db.property.
FloatProperty
(verbose_name=None, name=None, default=0.0, required=False, validator=None, choices=None, unique=False)¶ -
-
empty
(value)¶
-
type_name
= 'Float'¶
-
validate
(value)¶
-
-
class
boto.sdb.db.property.
IntegerProperty
(verbose_name=None, name=None, default=0, required=False, validator=None, choices=None, unique=False, max=2147483647, min=-2147483648)¶ -
-
empty
(value)¶
-
type_name
= 'Integer'¶
-
validate
(value)¶
-
-
class
boto.sdb.db.property.
ListProperty
(item_type, verbose_name=None, name=None, default=None, **kwds)¶ -
data_type
¶ alias of
list
-
default_value
()¶
-
empty
(value)¶
-
type_name
= 'List'¶
-
validate
(value)¶
-
-
class
boto.sdb.db.property.
LongProperty
(verbose_name=None, name=None, default=0, required=False, validator=None, choices=None, unique=False)¶ -
-
empty
(value)¶
-
type_name
= 'Long'¶
-
validate
(value)¶
-
-
class
boto.sdb.db.property.
MapProperty
(item_type=<type 'str'>, verbose_name=None, name=None, default=None, **kwds)¶ -
-
default_value
()¶
-
empty
(value)¶
-
type_name
= 'Map'¶
-
validate
(value)¶
-
-
class
boto.sdb.db.property.
PasswordProperty
(verbose_name=None, name=None, default='', required=False, validator=None, choices=None, unique=False, hashfunc=None)¶ Hashed property whose original value can not be retrieved, but still can be compared.
Works by storing a hash of the original value instead of the original value. Once that’s done all that can be retrieved is the hash.
The comparison
obj.password == ‘foo’generates a hash of ‘foo’ and compares it to the stored hash.
Underlying data type for hashing, storing, and comparing is boto.utils.Password. The default hash function is defined there ( currently sha512 in most cases, md5 where sha512 is not available )
It’s unlikely you’ll ever need to use a different hash function, but if you do, you can control the behavior in one of two ways:
Specifying hashfunc in PasswordProperty constructor
import hashlib
- class MyModel(model):
password = PasswordProperty(hashfunc=hashlib.sha224)
Subclassing Password and PasswordProperty
- class SHA224Password(Password):
hashfunc=hashlib.sha224
- class SHA224PasswordProperty(PasswordProperty):
data_type=MyPassword type_name=”MyPassword”
- class MyModel(Model):
password = SHA224PasswordProperty()
The hashfunc parameter overrides the default hashfunc in boto.utils.Password.
The remaining parameters are passed through to StringProperty.__init__
-
data_type
¶ alias of
Password
-
get_value_for_datastore
(model_instance)¶
-
make_value_from_datastore
(value)¶
-
type_name
= 'Password'¶
-
validate
(value)¶
-
class
boto.sdb.db.property.
Property
(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, unique=False)¶ -
-
default_validator
(value)¶
-
default_value
()¶
-
empty
(value)¶
-
get_choices
()¶
-
get_value_for_datastore
(model_instance)¶
-
make_value_from_datastore
(value)¶
-
name
= ''¶
-
type_name
= ''¶
-
validate
(value)¶
-
verbose_name
= ''¶
-
-
class
boto.sdb.db.property.
ReferenceProperty
(reference_class=None, collection_name=None, verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, unique=False)¶ -
check_instance
(value)¶
-
check_uuid
(value)¶
-
data_type
¶ alias of
Key
-
type_name
= 'Reference'¶
-
validate
(value)¶
-
-
class
boto.sdb.db.property.
S3KeyProperty
(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, unique=False)¶ -
data_type
¶ alias of
Key
-
get_value_for_datastore
(model_instance)¶
-
type_name
= 'S3Key'¶
-
validate
(value)¶
-
validate_regex
= '^s3:\\/\\/([^\\/]*)\\/(.*)$'¶
-
-
class
boto.sdb.db.property.
StringProperty
(verbose_name=None, name=None, default='', required=False, validator=<function validate_string>, choices=None, unique=False)¶ -
type_name
= 'String'¶
-
-
class
boto.sdb.db.property.
TextProperty
(verbose_name=None, name=None, default='', required=False, validator=None, choices=None, unique=False, max_length=None)¶ -
type_name
= 'Text'¶
-
validate
(value)¶
-
-
class
boto.sdb.db.property.
TimeProperty
(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, unique=False)¶ -
data_type
¶ alias of
time
-
type_name
= 'Time'¶
-
validate
(value)¶
-
-
boto.sdb.db.property.
validate_string
(value)¶
boto.sdb.db.query¶
-
class
boto.sdb.db.query.
Query
(model_class, limit=None, next_token=None, manager=None)¶ -
count
(quick=True)¶
-
fetch
(limit, offset=0)¶ Not currently fully supported, but we can use this to allow them to set a limit in a chainable method
-
filter
(property_operator, value)¶
-
get_next_token
()¶
-
get_query
()¶
-
next
()¶
-
next_token
¶
-
order
(key)¶
-
set_next_token
(token)¶
-
to_xml
(doc=None)¶
-