|
13 | 13 | fn, |
14 | 14 | chunked, |
15 | 15 | Asc, |
16 | | - Desc |
| 16 | + Desc, |
| 17 | + EXCLUDED |
17 | 18 | ) |
18 | 19 |
|
19 | 20 | from vnpy.trader.constant import Exchange, Interval |
@@ -184,13 +185,13 @@ def save_bar_data(self, bars: list[BarData], stream: bool = False) -> bool: |
184 | 185 | for c in chunked(data, 100): |
185 | 186 | DbBarData.insert_many(c).on_conflict( |
186 | 187 | update={ |
187 | | - DbBarData.volume: DbBarData.volume, |
188 | | - DbBarData.turnover: DbBarData.turnover, |
189 | | - DbBarData.open_interest: DbBarData.open_interest, |
190 | | - DbBarData.open_price: DbBarData.open_price, |
191 | | - DbBarData.high_price: DbBarData.high_price, |
192 | | - DbBarData.low_price: DbBarData.low_price, |
193 | | - DbBarData.close_price: DbBarData.close_price |
| 188 | + DbBarData.volume: EXCLUDED.volume, |
| 189 | + DbBarData.turnover: EXCLUDED.turnover, |
| 190 | + DbBarData.open_interest: EXCLUDED.open_interest, |
| 191 | + DbBarData.open_price: EXCLUDED.open_price, |
| 192 | + DbBarData.high_price: EXCLUDED.high_price, |
| 193 | + DbBarData.low_price: EXCLUDED.low_price, |
| 194 | + DbBarData.close_price: EXCLUDED.close_price |
194 | 195 | }, |
195 | 196 | conflict_target=( |
196 | 197 | DbBarData.symbol, |
@@ -255,54 +256,42 @@ def save_tick_data(self, ticks: list[TickData], stream: bool = False) -> bool: |
255 | 256 |
|
256 | 257 | # 使用upsert操作将数据更新到数据库中 |
257 | 258 | with self.db.atomic(): |
258 | | - for d in data: |
259 | | - DbTickData.insert(d).on_conflict( |
260 | | - update=d, |
261 | | - conflict_target=( |
262 | | - DbTickData.symbol, |
263 | | - DbTickData.exchange, |
264 | | - DbTickData.datetime, |
265 | | - |
266 | | - |
267 | | - ), |
268 | | - ).execute() |
269 | | - |
270 | 259 | for c in chunked(data, 100): |
271 | 260 | DbTickData.insert_many(c).on_conflict( |
272 | 261 | update={ |
273 | | - DbTickData.name: DbTickData.name, |
274 | | - DbTickData.volume: DbTickData.volume, |
275 | | - DbTickData.turnover: DbTickData.turnover, |
276 | | - DbTickData.open_interest: DbTickData.open_interest, |
277 | | - DbTickData.last_price: DbTickData.last_price, |
278 | | - DbTickData.last_volume: DbTickData.last_volume, |
279 | | - DbTickData.limit_up: DbTickData.limit_up, |
280 | | - DbTickData.limit_down: DbTickData.limit_down, |
281 | | - DbTickData.open_price: DbTickData.open_price, |
282 | | - DbTickData.high_price: DbTickData.high_price, |
283 | | - DbTickData.low_price: DbTickData.low_price, |
284 | | - DbTickData.pre_close: DbTickData.pre_close, |
285 | | - DbTickData.bid_price_1: DbTickData.bid_price_1, |
286 | | - DbTickData.bid_price_2: DbTickData.bid_price_2, |
287 | | - DbTickData.bid_price_3: DbTickData.bid_price_3, |
288 | | - DbTickData.bid_price_4: DbTickData.bid_price_4, |
289 | | - DbTickData.bid_price_5: DbTickData.bid_price_5, |
290 | | - DbTickData.ask_price_1: DbTickData.ask_price_1, |
291 | | - DbTickData.ask_price_2: DbTickData.ask_price_2, |
292 | | - DbTickData.ask_price_3: DbTickData.ask_price_3, |
293 | | - DbTickData.ask_price_4: DbTickData.ask_price_4, |
294 | | - DbTickData.ask_price_5: DbTickData.ask_price_5, |
295 | | - DbTickData.bid_volume_1: DbTickData.bid_volume_1, |
296 | | - DbTickData.bid_volume_2: DbTickData.bid_volume_2, |
297 | | - DbTickData.bid_volume_3: DbTickData.bid_volume_3, |
298 | | - DbTickData.bid_volume_4: DbTickData.bid_volume_4, |
299 | | - DbTickData.bid_volume_5: DbTickData.bid_volume_5, |
300 | | - DbTickData.ask_volume_1: DbTickData.ask_volume_1, |
301 | | - DbTickData.ask_volume_2: DbTickData.ask_volume_2, |
302 | | - DbTickData.ask_volume_3: DbTickData.ask_volume_3, |
303 | | - DbTickData.ask_volume_4: DbTickData.ask_volume_4, |
304 | | - DbTickData.ask_volume_5: DbTickData.ask_volume_5, |
305 | | - DbTickData.localtime: DbTickData.localtime, |
| 262 | + DbTickData.name: EXCLUDED.name, |
| 263 | + DbTickData.volume: EXCLUDED.volume, |
| 264 | + DbTickData.turnover: EXCLUDED.turnover, |
| 265 | + DbTickData.open_interest: EXCLUDED.open_interest, |
| 266 | + DbTickData.last_price: EXCLUDED.last_price, |
| 267 | + DbTickData.last_volume: EXCLUDED.last_volume, |
| 268 | + DbTickData.limit_up: EXCLUDED.limit_up, |
| 269 | + DbTickData.limit_down: EXCLUDED.limit_down, |
| 270 | + DbTickData.open_price: EXCLUDED.open_price, |
| 271 | + DbTickData.high_price: EXCLUDED.high_price, |
| 272 | + DbTickData.low_price: EXCLUDED.low_price, |
| 273 | + DbTickData.pre_close: EXCLUDED.pre_close, |
| 274 | + DbTickData.bid_price_1: EXCLUDED.bid_price_1, |
| 275 | + DbTickData.bid_price_2: EXCLUDED.bid_price_2, |
| 276 | + DbTickData.bid_price_3: EXCLUDED.bid_price_3, |
| 277 | + DbTickData.bid_price_4: EXCLUDED.bid_price_4, |
| 278 | + DbTickData.bid_price_5: EXCLUDED.bid_price_5, |
| 279 | + DbTickData.ask_price_1: EXCLUDED.ask_price_1, |
| 280 | + DbTickData.ask_price_2: EXCLUDED.ask_price_2, |
| 281 | + DbTickData.ask_price_3: EXCLUDED.ask_price_3, |
| 282 | + DbTickData.ask_price_4: EXCLUDED.ask_price_4, |
| 283 | + DbTickData.ask_price_5: EXCLUDED.ask_price_5, |
| 284 | + DbTickData.bid_volume_1: EXCLUDED.bid_volume_1, |
| 285 | + DbTickData.bid_volume_2: EXCLUDED.bid_volume_2, |
| 286 | + DbTickData.bid_volume_3: EXCLUDED.bid_volume_3, |
| 287 | + DbTickData.bid_volume_4: EXCLUDED.bid_volume_4, |
| 288 | + DbTickData.bid_volume_5: EXCLUDED.bid_volume_5, |
| 289 | + DbTickData.ask_volume_1: EXCLUDED.ask_volume_1, |
| 290 | + DbTickData.ask_volume_2: EXCLUDED.ask_volume_2, |
| 291 | + DbTickData.ask_volume_3: EXCLUDED.ask_volume_3, |
| 292 | + DbTickData.ask_volume_4: EXCLUDED.ask_volume_4, |
| 293 | + DbTickData.ask_volume_5: EXCLUDED.ask_volume_5, |
| 294 | + DbTickData.localtime: EXCLUDED.localtime, |
306 | 295 | }, |
307 | 296 | conflict_target=( |
308 | 297 | DbTickData.symbol, |
|
0 commit comments