Wie deaktiviere ich die automatische Festschreibung und mache einen Stapel von Put-Vorgängen atomar?Python

Python-Programme
Anonymous
 Wie deaktiviere ich die automatische Festschreibung und mache einen Stapel von Put-Vorgängen atomar?

Post by Anonymous »

Ich verwende GridDB Cloud (kostenlos) mit dem Python-Client und muss einen Stapel von Zeilen atomar (alles oder nichts) in einen TimeSeries-Container schreiben. Ich habe Probleme herauszufinden, wie ich das automatische Festschreiben und das explizite Festschreiben/Rollback deaktivieren kann.
Minimale Reproduktion:

Code: Select all

import griddb_python as griddb
from datetime import datetime, timezone

# connect
factory = griddb.StoreFactory.get_instance()
store = factory.get_store(
host="xxx.cloud.griddb.com",
port=31999,
cluster_name="KN3yxw8u",
username="userM016Pqo8pS",
password="****",
)

# create/open timeseries
props = griddb.TimeSeriesProperties()
props.row_key = True
props.set_column_info([
("ts", griddb.Type.TIMESTAMP),
("deviceid", griddb.Type.STRING),
("temperature", griddb.Type.DOUBLE),
])
ts = store.put_time_series("TSDB", props)

# --- transaction attempt ----------------------------------------------
# Q: Where do I disable autocommit?
#    ts.set_auto_commit(False) ? store.set_auto_commit(False) ?

rows = [
(datetime(2025, 9, 1, 0, 0, tzinfo=timezone.utc), "dev-001", 25.0),
(datetime(2025, 9, 1, 1, 0, tzinfo=timezone.utc), "dev-001", 26.0),
]

try:
# try to batch insert
for r in rows:
ts.put(r)

# simulate a failure before commit
raise RuntimeError("boom")

ts.commit()           # expect not to reach here
except Exception:
# I expected no rows to be visible after this
ts.rollback()

# Observed: after the exception, the new rows are visible,
# which makes it appear as though autocommit was enabled.
Frage:
Wie deaktiviere ich Autocommit und verwende explizit commit()/rollback() mit dem Python GridDB-Client für einen TimeSeries-Container? Was ist das richtige aufzurufende Objekt/die richtige Methode (Container vs. Store) und gibt es etwas Besonderes für TimeSeries?
Umgebung:
  • GridDB Cloud (kostenlos)
  • griddb_python-Client
  • TimeSeries-Container (ts TIMESTAMP als Zeilenschlüssel)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post