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"
- 主要語言
- Python
- 星號
- 5.4k
- 分支
- 1.8k
- 平均合併
- 2 天 23 小時
- 30 天內合併 PR
- 123
描述
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
貢獻指南
評估
這個 Issue 還沒有評估資料。