Baskaran Baskaran - 4 months ago 21
Python Question

How to check duplicate data in my datastore and display the error?

Am working on GAE,GAE datastore and python.

This is my,

class Customer(db.Model):
name = db.StringProperty(required=True)
phone = db.PhoneNumberProperty(required=True)
email = db.EmailProperty(required=True)

this is my,

class AddCustomerHandler(BaseHandler):
def get(self):
template = jinja_environment.get_template('template/addcustomer.html')

def post(self):



Data store is working fine. I want to check the my
data duplicate or not based on fullname. if its already entered the data didn't allow to save and need to display the error message.
How can i do that?


There's good Unique model available in webapp2:

For example, suppose we have a model User with three properties that must be unique across a given group: username, auth_id and email::

class User(model.Model):
    username = model.StringProperty(required=True)
    auth_id = model.StringProperty(required=True)
    email = model.StringProperty(required=True)

To ensure property uniqueness when creating a new User, we first create Unique records for those properties, and if everything goes well we can save the new User record::

def create_user(cls, username, auth_id, email):
    # Assemble the unique values for a given class and attribute scope.
    uniques = [
        'User.username.%s' % username,
        'User.auth_id.%s' % auth_id,
        '' % email,

    # Create the unique username, auth_id and email.
    success, existing = Unique.create_multi(uniques)

    if success:
        # The unique values were created, so we can save the user.
        user = User(username=username, auth_id=auth_id, email=email)
        return user
        # At least one of the values is not unique.
        # Make a list of the property names that failed.
        props = [name.split('.', 2)[1] for name in uniques]
        raise ValueError('Properties %r are not unique.' % props)

This is the only way to transactionally check the uniqueness.