powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPSERT с множеством строк
3 сообщений из 3, страница 1 из 1
UPSERT с множеством строк
    #39614422
Closius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пытаюсь сделать UPSERT с множеством строк. Работаю через Django 2, PostgreSQL 9.5.9

Таблица с которой работаю следующая:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
\d+ candle
                                                           Table "public.candle"
      Column       |           Type           |                      Modifiers                      | Storage | Stats target | Description 
-------------------+--------------------------+-----------------------------------------------------+---------+--------------+-------------
 id                | integer                  | not null default nextval('candle_id_seq'::regclass) | plain   |              | 
 mts               | timestamp with time zone | not null                                            | plain   |              | 
 open              | numeric(200,40)          | not null                                            | main    |              | 
 close             | numeric(200,40)          | not null                                            | main    |              | 
 high              | numeric(200,40)          | not null                                            | main    |              | 
 low               | numeric(200,40)          | not null                                            | main    |              | 
 volume            | numeric(200,40)          | not null                                            | main    |              | 
 pair_timeframe_id | integer                  | not null                                            | plain   |              | 
Indexes:
    "candle_pkey" PRIMARY KEY, btree (id)
    "candle_mts_84b62390_uniq" UNIQUE CONSTRAINT, btree (mts)
    "candle_pair_timeframe_id_3f7b76ce" btree (pair_timeframe_id)
Foreign-key constraints:
    "candle_pair_timeframe_id_3f7b76ce_fk_pair_timeframe_id" FOREIGN KEY (pair_timeframe_id) REFERENCES pair_timeframe(id) DEFERRABLE INITIALLY DEFERRED




Часто приходят новые данные, обрабатываю их таким запросом:

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    with connection.cursor() as cursor:
        g = '''
                                INSERT INTO candle (
                                  pair_timeframe_id, mts, open, close, high, low, volume
                                  ) VALUES %s
                                  ON CONFLICT (mts)
                                  DO UPDATE SET
                                        pair_timeframe_id = EXCLUDED.pair_timeframe_id,
                                        open = EXCLUDED.open,
                                        close = EXCLUDED.close,
                                        high = EXCLUDED.high,
                                        low = EXCLUDED.low,
                                        volume = EXCLUDED.volume;
        ''' % (data)
        cursor.execute(g)



Получаются такие запросы (иногда много строк обновлять/добавлять, иногда мало, иногда одна):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
INSERT INTO candle (
  pair_timeframe_id, mts, open, close, high, low, volume
  ) VALUES (1, '2018-03-13 18:52:00', 248.64, 248.68, 248.68, 248.64, 9.965), (1, '2018-03-13 18:51:00', 247.92, 248.65, 248.65, 247.92, 11.46482352), (1, '2018-03-13 18:50:00', 247.97, 248.18, 248.18, 247.97, 125.73717713), (1, '2018-03-13 18:48:00', 247.46, 247.95, 247.95, 247.12, 31.86128355), (1, '2018-03-13 18:46:00', 247.96, 247.33, 247.96, 247.33, 2), (1, '2018-03-13 18:45:00', 247.61, 247.67, 247.67, 247.61, 15.4), (1, '2018-03-13 18:44:00', 247.35, 247.67, 247.67, 247.33, 49.2068016), (1, '2018-03-13 18:43:00', 247.35, 247.45, 247.45, 247.35, 3.36161304), (1, '2018-03-13 18:41:00', 247.48, 247.67, 247.67, 247.48, 10.29851607)
  ON CONFLICT (mts)
  DO UPDATE SET
        pair_timeframe_id = EXCLUDED.pair_timeframe_id,
        open = EXCLUDED.open,
        close = EXCLUDED.close,
        high = EXCLUDED.high,
        low = EXCLUDED.low,
        volume = EXCLUDED.volume;



INSERT INTO candle (
  pair_timeframe_id, mts, open, close, high, low, volume
  ) VALUES (1, '2018-03-13 18:51:00', 247.92, 248.65, 248.65, 247.92, 11.46482352)
  ON CONFLICT (mts)
  DO UPDATE SET
        pair_timeframe_id = EXCLUDED.pair_timeframe_id,
        open = EXCLUDED.open,
        close = EXCLUDED.close,
        high = EXCLUDED.high,
        low = EXCLUDED.low,
        volume = EXCLUDED.volume;







Сделал логирование запросов, по логам видно, что многие запросы должны быть выполнены и должны появиться новые строки, но они не появляются. А иногда появляются, иногда вообеще кол-во строк в таблице уменьшается(!).

Может быть я не правильно формирую запросы (UPSERT)? Подскажите пожалуйста, что это моет быть?
...
Рейтинг: 0 / 0
UPSERT с множеством строк
    #39614453
Closius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изменил запрос на такой. Добавил WHERE для UPDATE. Вроде заработало.

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    with connection.cursor() as cursor:
        g = '''
                                INSERT INTO candle (
                                  pair_timeframe_id, mts, open, close, high, low, volume
                                  ) VALUES %s
                                  ON CONFLICT (mts)
                                  DO UPDATE SET
                                        open = EXCLUDED.open,
                                        close = EXCLUDED.close,
                                        high = EXCLUDED.high,
                                        low = EXCLUDED.low,
                                        volume = EXCLUDED.volume
                                  WHERE candle.pair_timeframe_id = %s;
        ''' % (data, str(pairs_timeframes_id))
...
Рейтинг: 0 / 0
UPSERT с множеством строк
    #39614476
Closius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не работает... Из источника идут такие данные:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
(5, '2018-03-13 21:36:00', 9106.9, 9106.9, 9106.9, 9106.9, 0.14997)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9106.9, 9106.9, 9106.9, 3.3481511)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9106.9, 9106.98836636, 9106.9, 8.8399811)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9102.9, 9106.98836636, 9102.9, 9.33746057)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9101.1, 9106.98836636, 9101.1, 9.43746057)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9100.9, 9106.98836636, 9100.9, 9.58737057)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9090.5, 9106.98836636, 9090.5, 10.63734057)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9096, 9106.98836636, 9090.5, 10.64734057)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9093.8, 9106.98836636, 9090.5, 10.66424057)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9093.8, 9106.98836636, 9090.5, 10.66424057)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9093.8, 9106.98836636, 9090.5, 10.66424057)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 12.86420057)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 12.86420057)
(5, '2018-03-13 21:35:00', 9094.5, 9106.9, 9116.5, 9094.5, 8.95034702)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9090, 9090, 9090, 9.89444)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9090, 9090, 9090, 9.89444)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9088.7, 9090, 9088.7, 9.9444)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9086, 9090, 9086, 10.23432)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9086, 9090, 9086, 10.25632)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9086.2, 9090, 9086, 10.75390409)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9086.2, 9090, 9086, 10.75390409)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9086.2, 9090, 9086, 10.75390409)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9086.2, 9090, 9086, 10.75390409)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9086.2, 9090, 9086, 10.75390409)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:36:00', 9106.9, 9090, 9106.98836636, 9090, 14.96920057)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:38:00', 9091.6, 9091, 9091.6, 9091, 0.0257514)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:38:00', 9091.6, 9087.1, 9091.6, 9087.1, 0.5257514)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:38:00', 9091.6, 9087.1, 9091.6, 9087.1, 0.5257514)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:38:00', 9091.6, 9087.1, 9091.6, 9087.1, 0.5257514)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:38:00', 9091.6, 9086, 9091.6, 9086, 0.6257514)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:38:00', 9091.6, 9086, 9091.6, 9086, 0.6257514)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:37:00', 9090, 9091.4, 9091.4, 9086, 11.01376409)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9086.1, 9086.1, 9086.1, 0.0066)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9086.1, 9086.1, 9086.1, 0.0066)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9086.1, 9086.1, 9086.1, 0.0066)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9086.1, 9086.1, 9086.1, 0.0066)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9086.8, 9086.8, 9086.1, 0.1584)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9086.8, 9086.8, 9086.1, 0.1584)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9086.8, 9086.8, 9086.1, 0.1584)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9086.8, 9086.8, 9086.1, 0.1584)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9086.8, 9086.8, 9086.1, 0.1584)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9086.8, 9086.8, 9086.1, 0.1584)
(5, '2018-03-13 21:38:00', 9091.6, 9087.28083114, 9091.6, 9086, 1.6257514)
(5, '2018-03-13 21:39:00', 9086.1, 9089.9, 9089.9, 9086.1, 0.66744634)
(5, '2018-03-13 21:39:00', 9086.1, 9089.9, 9089.9, 9086.1, 0.66744634)



А в базе данных сохраняются не все:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
2018-03-14 00:39:00.000000
2018-03-14 00:38:00.000000
2018-03-14 00:36:00.000000
2018-03-14 00:34:00.000000
2018-03-14 00:29:00.000000
2018-03-14 00:28:00.000000
2018-03-14 00:27:00.000000
2018-03-14 00:26:00.000000



например куда пропала 35 и 37 минуты?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UPSERT с множеством строк
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]