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

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

Vasiliy
11.04.2018
18:31:27

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?

Al
12.04.2018
01:56:55


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
А голова у кого то не работает.
Я выше привел мой пример. Скорее всего он довольно медленный так-как идет перебор, да ещё и внутри медленного питона. Я думал может есть другие способы или решения, спросил у опытных
Особенно интересно решается ли моя проблема используя булк инсерты, потому что они быстрые

Al
12.04.2018
02:04:41

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

Al
12.04.2018
02:05:39

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

Al
12.04.2018
02:17:50

Stanislav
12.04.2018
02:18:05
Можно просто проигнорировать

Al
12.04.2018
02:19:30
Можно загуглить

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

Al
12.04.2018
02:21:59

Stanislav
12.04.2018
02:22:54

Al
12.04.2018
02:25:38

Ilia
12.04.2018
04:31:06


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

Ilia
12.04.2018
04:39:09
PK не обязан или по порядку

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

Ilia
12.04.2018
04:43:04
Тогда сначала ищешь по ключу, если не нашел - создаёшь.
Хотя...
Это приложение должно делать явно.
Потому что если вдруг ты переключился на другую СУБД то там такой фамилией может не быть, тебе придется все равно делать это в приложении самому
Ну всё

Stanislav
12.04.2018
04:45:26


Vladislav
12.04.2018
05:31:51
Всем привет, помогите решить проблемку:
Использую 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?
Upsert, вот только хз, если он в лайте или нет

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

Д
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 скрипт прошелся по всем файлам и создал таблицы по названию файлов
ну и информацию вбил из файлов