Skip to content

Commit 101d195

Browse files
authored
Merge pull request #11 from noranhe/noran-dev
[Fix] issue 10
2 parents 57432ec + 6b28fb3 commit 101d195

File tree

1 file changed

+42
-53
lines changed

1 file changed

+42
-53
lines changed

vnpy_postgresql/postgresql_database.py

Lines changed: 42 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
fn,
1414
chunked,
1515
Asc,
16-
Desc
16+
Desc,
17+
EXCLUDED
1718
)
1819

1920
from vnpy.trader.constant import Exchange, Interval
@@ -184,13 +185,13 @@ def save_bar_data(self, bars: list[BarData], stream: bool = False) -> bool:
184185
for c in chunked(data, 100):
185186
DbBarData.insert_many(c).on_conflict(
186187
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
194195
},
195196
conflict_target=(
196197
DbBarData.symbol,
@@ -255,54 +256,42 @@ def save_tick_data(self, ticks: list[TickData], stream: bool = False) -> bool:
255256

256257
# 使用upsert操作将数据更新到数据库中
257258
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-
270259
for c in chunked(data, 100):
271260
DbTickData.insert_many(c).on_conflict(
272261
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,
306295
},
307296
conflict_target=(
308297
DbTickData.symbol,

0 commit comments

Comments
 (0)