@@ -131,66 +131,66 @@ ID for the record we are inserting into the ``mytable`` table.
131
131
132
132
.. code :: python
133
133
134
- # /// script
135
- # requires-python = ">=3.8"
136
- # dependencies = [
137
- # "records",
138
- # "sqlalchemy-cratedb",
139
- # ]
140
- # ///
141
-
142
- import time
143
-
144
- import records
145
-
146
- db = records.Database(" crate://" )
147
- sequence_name = " mysequence"
148
-
149
- max_retries = 5
150
- base_delay = 0.1 # 100 milliseconds
151
-
152
- for attempt in range (max_retries):
153
- select_query = """
154
- SELECT last_value,
155
- _seq_no,
156
- _primary_term
157
- FROM sequences
158
- WHERE name = :sequence_name;
159
- """
160
- row = db.query(select_query, sequence_name = sequence_name).first()
161
- new_value = row.last_value + 1
162
-
163
- update_query = """
164
- UPDATE sequences
165
- SET last_value = :new_value
166
- WHERE name = :sequence_name
167
- AND _seq_no = :seq_no
168
- AND _primary_term = :primary_term
169
- RETURNING last_value;
170
- """
171
- if (
172
- str (
173
- db.query(
174
- update_query,
175
- new_value = new_value,
176
- sequence_name = sequence_name,
177
- seq_no = row._seq_no,
178
- primary_term = row._primary_term,
179
- ).all()
180
- )
181
- != " []"
182
- ):
183
- break
184
-
185
- delay = base_delay * (2 ** attempt)
186
- print (f " Attempt { attempt + 1 } failed. Retrying in { delay:.1f } seconds... " )
187
- time.sleep(delay)
188
- else :
189
- raise Exception (f " Failed after { max_retries} retries with exponential backoff " )
190
-
191
- insert_query = " INSERT INTO mytable (id, field1) VALUES (:id, :field1)"
192
- db.query(insert_query, id = new_value, field1 = " abc" )
193
- db.close()
134
+ # /// script
135
+ # requires-python = ">=3.8"
136
+ # dependencies = [
137
+ # "records",
138
+ # "sqlalchemy-cratedb",
139
+ # ]
140
+ # ///
141
+
142
+ import time
143
+
144
+ import records
145
+
146
+ db = records.Database(" crate://" )
147
+ sequence_name = " mysequence"
148
+
149
+ max_retries = 5
150
+ base_delay = 0.1 # 100 milliseconds
151
+
152
+ for attempt in range (max_retries):
153
+ select_query = """
154
+ SELECT last_value,
155
+ _seq_no,
156
+ _primary_term
157
+ FROM sequences
158
+ WHERE name = :sequence_name;
159
+ """
160
+ row = db.query(select_query, sequence_name = sequence_name).first()
161
+ new_value = row.last_value + 1
162
+
163
+ update_query = """
164
+ UPDATE sequences
165
+ SET last_value = :new_value
166
+ WHERE name = :sequence_name
167
+ AND _seq_no = :seq_no
168
+ AND _primary_term = :primary_term
169
+ RETURNING last_value;
170
+ """
171
+ if (
172
+ str (
173
+ db.query(
174
+ update_query,
175
+ new_value = new_value,
176
+ sequence_name = sequence_name,
177
+ seq_no = row._seq_no,
178
+ primary_term = row._primary_term,
179
+ ).all()
180
+ )
181
+ != " []"
182
+ ):
183
+ break
184
+
185
+ delay = base_delay * (2 ** attempt)
186
+ print (f " Attempt { attempt + 1 } failed. Retrying in { delay:.1f } seconds... " )
187
+ time.sleep(delay)
188
+ else :
189
+ raise Exception (f " Failed after { max_retries} retries with exponential backoff " )
190
+
191
+ insert_query = " INSERT INTO mytable (id, field1) VALUES (:id, :field1)"
192
+ db.query(insert_query, id = new_value, field1 = " abc" )
193
+ db.close()
194
194
195
195
.. _extremely fast ingestion speeds : https://cratedb.com/blog/how-we-scaled-ingestion-to-one-million-rows-per-second
196
196
0 commit comments