googleapis / googleapis/google-cloud-python

database: run_in_transaction with DQL (Data Query Language) statements seems impossible to use and produces "Transaction is not begun" and then "Transaction is already committed"

Abierto
#15,907 3 comentarios 0 reacciones 2 asignados Reclamado por @sinhasubham Ver en GitHub
api: spanner priority: p3 type: question
Lenguaje dominante
Python
Estrellas
5.4k
Forks
1.8k
Merge medio
3 d 4 h
PR fusionados (30 d)
122

Descripción

While working on battle testing for observability to inspect expected spans, I wrote this code

```python
def tx_dql_select(tx):
return tx.execute_sql("SELECT * FROM Singers")

fn = tx_dql_select
try:
result = database.run_in_transaction(fn)
if result and hasattr(result, "__iter__"):
for res in result:
print(res)
except Exception as e:
print(fn.__name__, e)
```

which produces

```shell
tx_dql_select Transaction is not begun
```

but when I add `tx.begin()` before the return I get back
```shell
tx_dql_select Transaction is already committed
```

It seems impossible to use, we need to figure out what's up. I should be able to run purely DQL in a transaction.

Kindly cc-ing @sakthivelmanii @harshachinta

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.