@dba_ru

Страница 477 из 718
lost
11.04.2018
16:32:17
В эррор лог возможно ругнется, потому что по сути mysqldump делает обычные селекты из таблиц

Anton
11.04.2018
18:13:23
всем привет. сделал дблинк от оракла в мсскл. работаю с таблицей по линку, в оракле всё ок, но в мсскл таблица при этом залочена напроч. пока оракл не отпустит транзакцию, обращения к таблице в мсскл блочатся. есть воркэраунд?

Anton
11.04.2018
18:32:05
мсскл?

Google
Vasiliy
11.04.2018
19:11:53
мсскл?
Да, вьюху в мсскл создавал и к ней из оракла лез. вроде помогало

Кстати, можно еще потрейсить какой запрос оракл формирует для мсскл. Была ситуация, когда оракл не мог правильно передать секцию where и тащил всю таблицу, может тут еще получится обойти блокировку

Anton
11.04.2018
19:19:56
ок, когда уже буду переносить приложения, то буду смотреть что там

Stanislav
12.04.2018
01:54:29
Всем привет, помогите решить проблемку: Использую peewee и SQLite. Это все на python Есть модель User, поля: user_id = IntegerField(unique=True) is_member = BooleanField() Добавление в базу осуществляется так: users = [ {'user_id': 1, 'is_member': 1}, {'user_id': 2, 'is_member': 0} ] with db.atomic(): User.insert_many(users).execute() Проблема заключается в следующем - я полный нуб в базах данных. В таблице users заранее могут быть строки, в которых user_id конфликтует с этим. Из-за этого будет выдавать ошибку peewee.IntegrityError: UNIQUE constraint failed: user.user_id. Как изменить архитектуру/алгоритм записи данных, что-бы кортежи в которых user_id конфликтует не записывались либо (что ещё лучше) в тех где конфликтует, что-бы в поле is_member значение менялось на 1?

Stanislav
12.04.2018
01:56:56
Я понимаю что можно перебирать всех пользователей, делать запрос в базу, и если есть с таким user_id то менять значение is_member, иначе - просто вставить запись.

Учебник почитать? Примеры посмотреть?
Какой учебник? Какие примеры?

Al
12.04.2018
01:57:39
Stanislav
12.04.2018
01:58:22
Al
12.04.2018
01:58:56
Кажется сейчас и тут забанят. Есть у меня такое предчувствие

Stanislav
12.04.2018
01:59:08
Гугл, как видишь, работает

Google
Al
12.04.2018
02:00:26
http://www.sqlitetutorial.net/sqlite-sample-database/

Гугл, как видишь, работает
А голова у кого то не работает.

Я вообще удивляюсь, как люди не умеющие находить ответы в инете и правильно формулировать задачи, умудряются чего то там кодить... тайна сия велика есть

Stanislav
12.04.2018
02:03:18
А голова у кого то не работает.
Я выше привел мой пример. Скорее всего он довольно медленный так-как идет перебор, да ещё и внутри медленного питона. Я думал может есть другие способы или решения, спросил у опытных

Особенно интересно решается ли моя проблема используя булк инсерты, потому что они быстрые

Stanislav
12.04.2018
02:04:54
Много users, проблема в конфликтах

Al
12.04.2018
02:05:39
Выглядит как троллинг
Выглядит как "закатывание глаз и крик в небо ЗА ЧТО?"

Много users, проблема в конфликтах
Давай пытаться думать. Откуда и почему конфликты?

Stanislav
12.04.2018
02:06:53
Al
12.04.2018
02:07:05
Где ты берешь этот уникальный ид?

Stanislav
12.04.2018
02:13:21
Где ты берешь этот уникальный ид?
Беру с телеграма. Он уникален для каждого юзера. Проблема в том что бота (которого я делаю) могли запускать до того как запустить скрипт, который будет всех пользователей собирать через клинтское API (в боте реализовано добавление пользователя когда он входит в чат и изменение 'is_member', когда выходит). Так вот, если человек который захотел развернуть бота у себя, сначала его запустил, а потом ему понадобилось для некоторого функционала иметь в базе всех пользователей, он запускает специальную утилиту, которая как-раз таки и собирает этих пользователей (там кстати много полей, но в примере я сократил до двух). Именно из-за того что он мог запустить бота раньше и, например, вошел новый человек, а он его соберет и попробует вместе с другими в булк инсерте ввести в базу возникнет конфликт. Я вот и спрашиваю есть ли какой-то способ или алгоритм, что-бы решить проблему с этим максимально быстро и элегантно

Я не понимаю почему ты так накинулся на меня, вот. Если что - бот не для скама и плохих вещей, бот для Мехмата МГУ и возможно других. Проект не комерческий

Не знаю какие данные ещё нужно, если что - готов отвечать на вопросы

Al
12.04.2018
02:16:15
И в соотвествии с ответом реализовать один вариант действий или другой

Google
Stanislav
12.04.2018
02:17:23
Ты перечитай свою задачу. Тебе нужно выяснить есть у тебя в базе такая запись или нет...
Я думал есть что-то типа "игнорировать конфликты" внутри скуэля, например

Stanislav
12.04.2018
02:18:05
Игнорируя конфликты сделать что?
Поменять значение is_member. Но это не критично

Можно просто проигнорировать

Al
12.04.2018
02:19:30
Можно просто проигнорировать
http://sqlite.org/lang_conflict.html

Можно загуглить

Stanislav
12.04.2018
02:20:46
Гениально. Попробую найти у себя в ОРМ это, если нет, то перепишу запрос на сырой скл. Спасибо

Al
12.04.2018
02:21:59
Stanislav
12.04.2018
02:22:54
То есть сам спросить у гугля про конфликты ты не мог?
Не знал как правильно сформулировать + формулировал со словом peewee

Al
12.04.2018
02:25:38
А я в этом моменте подумал что ты тупо тролишь
Ты и в этом тупишь? Какой смысл дать готовый ответ? Это как в той притче про голодного.. ".. дай ему удочку и он заведет себе инстаграм и канал о рыбалке на ютубе"

Ilia
12.04.2018
04:31:06
Особенно интересно решается ли моя проблема используя булк инсерты, потому что они быстрые
Bulk insertы не генерируют ключи обычно, их используют для перегрузки уже готовых данных.

Stanislav
12.04.2018
04:38:11
Peewee primary key generation strategies
Предлагаешь сделать user_id primary key? Просто user_id это 9-ти значные числа, которые ну, скажем идут не по порядку. Кароче моя проблема уже решена, а так я не вижу смысла в создании уникального индекса по user_id. За отклик спасибо

Stanislav
12.04.2018
04:39:46
Ilia
12.04.2018
04:40:19
Ну а с какого перепуга тогда там должны быть конфликты?

Stanislav
12.04.2018
04:40:58
Ну а с какого перепуга тогда там должны быть конфликты?
Ну потому что база уже может существовать и там могут быть эти же юзеры

Google
Ilia
12.04.2018
04:41:32
Тогда это user generated PK и все. А конфликт у тебя должен значить, что пользователь у тебя в БД уже существует, и надо использовать его

Ну потому что база уже может существовать и там могут быть эти же юзеры
Это целиком вопрос твоего приложения уже, даже не ОРМ.

Stanislav
12.04.2018
04:43:00
Это целиком вопрос твоего приложения уже, даже не ОРМ.
Ну вопрос порешался в итоге on conflict, самой базой

Ilia
12.04.2018
04:43:04
Тогда сначала ищешь по ключу, если не нашел - создаёшь.

Хотя...

Это приложение должно делать явно.

Потому что если вдруг ты переключился на другую СУБД то там такой фамилией может не быть, тебе придется все равно делать это в приложении самому

Ну всё

Stanislav
12.04.2018
05:34:09
Maxim ??
12.04.2018
05:34:12
нет его там

UPDATE OR IGNORE ... INSERT OR IGNORE ...

Д
12.04.2018
08:13:11
INSERT INTO old_entity ( BIN, name_kk, name_ru, CEO) SELECT BIN, name_kk, name_ru, CEO FROM old_entity_temp a, legal_entity b WHERE a.BIN = b.BIN and a.CEO <> b.CEO ON DUPLICATE KEY UPDATE name_kk = VALUES(name_kk), name_ru = VALUES(name_ru), CEO = VALUES(CEO);

Здравствуйте

помогите ошибку выдает

BIN is ambigous

lost
12.04.2018
08:13:58
тебе мускуль уже все сказал

Д
12.04.2018
08:15:56


Google
Д
12.04.2018
08:22:16
я хочу залить в таблицу выбранные данные из двух таблиц

Rushan
12.04.2018
08:30:39
Всем добрый день! Подскажите насколько быстро выполняются операции с WHERE IN с кучей параметров?

Я вот думаю, стоит ли так делать вообще

Vasiliy
12.04.2018
08:37:08
я хочу залить в таблицу выбранные данные из двух таблиц
У тебя написано SELECT BIN, но этот столбец есть в обеих таблицах old_entity_temp a, legal_entity b. Нужно указывать алиас перед именем столбца чтобы БД знала какой именно тебе нужен

Д
12.04.2018
08:37:21
я все сделал уже спасибо

Samat
12.04.2018
09:03:59
ребят. всем привет. есть одна задачка по выбору способа хранения информации. можете подсказать/направить?

Vladislav
12.04.2018
09:05:14
подсказываю и направляю

Samat
12.04.2018
09:05:43
нужно собирать статистику по пользователям. в статистике можно выбирать за какой период нужна инфа. допустим, сколько пользователей зарегались с 1 января по 31 марта. раньше уже с таким сталкивался. решал так: каждую минуту (для актуальности) писал в таблицу статистики все счетчики count_users, count_users_age (в другом поле указывал возраст). ну и так далее. а в 00:00 удалял все счетчики за прошлый день, кроме 23:59. итого, за каждый прошедший день у меня была инфа. и все норм работало. теперь проблема в том, что текущая статистика имеет много фильтров. можно выбрать период, дату регистрации, возраст и еще 10+ полей. все можно между собой комбинировать. если я буду использовать старый способ, то мне придется записывать счетчики для каждой комбинации фильтров. это фейл. вариант со сбором статистики сразу по пользователям, а не по отдельной таблице статистики, не подойдет, т.к. если я захочу посмотреть инфу за прошедшее время, у некоторых юзеров могут уже поменяться данные, некоторые удалятся и т.п.

вот. нужно как-то правильно организовать сбор счетчиков. потом из них делаю пай-чарты, диаграммы

Д
12.04.2018
09:13:16
народ как можно сделать, чтобы sql скрипт прошелся по всем файлам и создал таблицы по названию файлов

ну и информацию вбил из файлов

Страница 477 из 718