I have the following code to create a dynamoDB table : 

```
def create_mock_dynamo_table():
    conn = boto3.client(
        "dynamodb",
        region_name=REGION,
        aws_access_key_id="ak",
        aws_secret_access_key="sk",
    )
    conn.create_table(
        TableName=DYNAMO_DB_TABLE,
        KeySchema=[
            {'AttributeName': 'PK', 'KeyType': 'HASH'},
            {'AttributeName': 'SK', 'KeyType': 'RANGE'}
        ],
        AttributeDefinitions=[
            {'AttributeName': 'PK', 'AttributeType': 'S'},
            {'AttributeName': 'SK', 'AttributeType': 'S'}],
        ProvisionedThroughput={"ReadCapacityUnits": 5, "WriteCapacityUnits": 5},
    )
    mock_table = boto3.resource('dynamodb', region_name=REGION).Table(DYNAMO_DB_TABLE)
    return mock_table

```

Then I use it to create two put-items :

```
    mock_table = create_mock_dynamo_table()
    mock_table.put_item(
        Item={
            'PK': 'did:100000001',
            'SK': 'weekday:monday:start_time:00:30',
        }
    )
    mock_table.put_item(
        Item={
            'PK': 'did:100000001',
            'SK': 'weekday:monday:start_time:00:40',
        },
        ConditionExpression='attribute_not_exists(PK)'
    )

```

When I do the second `put_item`, the `PK` is already there in the system and only the sort key is different. But the condition I am setting only in the existence of same `PK`. So the second `put_item` should fail right ?