

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejemplos de consultas parametrizadas de openCypher
<a name="opencypher-parameterized-queries"></a>

Neptune admite consultas de openCypher parametrizadas. Esto le permite usar la misma estructura de consulta varias veces con argumentos diferentes. Como la estructura de la consulta no cambia, Neptune puede almacenar en caché su árbol de sintaxis abstracto (AST) en lugar de tener que analizarlo varias veces.

## Ejemplo de una consulta parametrizada de openCypher con el punto de conexión HTTPS
<a name="opencypher-http-parameterized-queries"></a>

A continuación se muestra un ejemplo de uso de una consulta parametrizada con el punto de conexión HTTPS de openCypher en Neptune. La consulta es:

```
MATCH (n {name: $name, age: $age})
RETURN n
```

Los parámetros se definen como sigue:

```
parameters={"name": "john", "age": 20}
```

Puedes enviar la consulta parametrizada de la siguiente manera:

------
#### [ AWS CLI ]

```
aws neptunedata execute-open-cypher-query \
  --endpoint-url https://your-neptune-endpoint:port \
  --open-cypher-query "MATCH (n {name: \$name, age: \$age}) RETURN n" \
  --parameters '{"name": "john", "age": 20}'
```

Para obtener más información, consulte la Referencia de [execute-open-cypher-query](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/execute-open-cypher-query.html)comandos. AWS CLI 

------
#### [ SDK ]

```
import boto3
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    endpoint_url='https://your-neptune-endpoint:port',
    config=Config(read_timeout=None, retries={'total_max_attempts': 1})
)

response = client.execute_open_cypher_query(
    openCypherQuery='MATCH (n {name: $name, age: $age}) RETURN n',
    parameters='{"name": "john", "age": 20}'
)

print(response['results'])
```

Para ver ejemplos de AWS SDK en otros idiomas, consulte[AWS SDK](access-graph-opencypher-sdk.md).

------
#### [ awscurl ]

```
awscurl https://your-neptune-endpoint:port/openCypher \
  --region us-east-1 \
  --service neptune-db \
  -X POST \
  -d "query=MATCH (n {name: \$name, age: \$age}) RETURN n" \
  -d 'parameters={"name": "john", "age": 20}'
```

**nota**  
En este ejemplo se supone que sus AWS credenciales están configuradas en su entorno. *us-east-1*Sustitúyala por la región de tu cúmulo de Neptuno.

------
#### [ curl ]

Uso de `POST`:

```
curl https://your-neptune-endpoint:port/openCypher \
  -d "query=MATCH (n {name: \$name, age: \$age}) RETURN n" \
  -d "parameters={\"name\": \"john\", \"age\": 20}"
```

Uso `GET` (codificado en URL):

```
curl -X GET \
  "https://your-neptune-endpoint:port/openCypher?query=MATCH%20%28n%20%7Bname:\$name,age:\$age%7D%29%20RETURN%20n&parameters=%7B%22name%22:%22john%22,%22age%22:20%7D"
```

Uso de `DIRECT POST`:

```
curl -H "Content-Type: application/opencypher" \
  "https://your-neptune-endpoint:port/openCypher?parameters=%7B%22name%22:%22john%22,%22age%22:20%7D" \
  -d "MATCH (n {name: \$name, age: \$age}) RETURN n"
```

------

## Ejemplos de consultas parametrizadas de openCypher con Bolt
<a name="opencypher-bolt-parameterized-queries"></a>

A continuación, se muestra un ejemplo de Python de una consulta parametrizada de openCypher que utiliza el protocolo Bolt:

```
from neo4j import GraphDatabase
uri = "bolt://[neptune-endpoint-url]:8182"
driver = GraphDatabase.driver(uri, auth=("", ""))

def match_name_and_age(tx, name, age):
  # Parameterized Query
  tx.run("MATCH (n {name: $name, age: $age}) RETURN n", name=name, age=age)

with driver.session() as session:
  # Parameters
  session.read_transaction(match_name_and_age, "john", 20)

driver.close()
```

A continuación, se muestra un ejemplo de Java de una consulta parametrizada de openCypher que utiliza el protocolo Bolt:

```
Driver driver = GraphDatabase.driver("bolt+s://(your cluster endpoint URL):8182");
HashMap<String, Object> parameters = new HashMap<>();
parameters.put("name", "john");
parameters.put("age", 20);
String queryString = "MATCH (n {name: $name, age: $age}) RETURN n";
Result result = driver.session().run(queryString, parameters);
```