Python

SQL в Python.Для работы с 125 тыс языковых пар.

Есть программа на Python которая работает с 125 тыс языковых пар, которые хранятся в файлах формата txt . Есть необходимость создать базу данных с помощью SQL с которой сверялись бы текстовые файлы. Это необходимо для пополнения текстовых файлов, находящихся на других Персональных компьютерах.
создаете таблицу DICTIONARY
с колонками original (primary key) | translation

и вперед INSERT INTO DICTIONARY (pair[0], pair[1]) для каждой пары в файлах
АБ
Алексей Базунов
34 259
Лучший ответ
В дополнение к предыдущему ответу - а обязательно через БД? Словарь на 125 тысяч по современным меркам - плюнуть и растереть. В любом случае, БД будет просто в силу вечной пересылки и конвертации данных туда-сюда работать медленнее...

Поясню.
Ты хочешь сделать общий репозиторий в виде БД и использовать его для синхронизации всех компов, так? А КАК ИМЕННО ты собрался это делать? 125к запросов на вхождение элементов от каждого клиента? Да ты задолбаешь свой сервер этими запросами. Плюс коллизии транзакций могут возникнуть запросто.

Если что-то такое и делать, то нужно писать хранимку, которая будет получать файлы целиком и возвращать новые же файлы. Во многих СУБД хранимки компилируются, поэтому будут работать быстро относительно соотв. количества запросов.

Ну а если совсем по-уму, то надо писать что-то самописное клиент-серверное.
ИГ
Иван Гречко
61 008
Жанибек Шарбактаев Я это делаю для обучения программы новым словосочетаниям.
Значить запросы будут на добавления строки по 1 слову, а извлечение по строк 10(приблизительно) пользователей же будет совсем немного (не больше 100).
то есть если в текстовом файле всего 125000 слов, а в таблице 125100 то мы должны сделать всего 100 запросов, предварительно узнав сколько элементов в текстовом файле и в таблице и какая между ними разница.
Программирование – это наука формальна, поэтому подойдем к задаче с формально математической точки зрения.
1)Есть программа на Питоне, которая работает со своей БД (в формате TXT) и в этой базе два поля "original" и "translation"
2)Есть некоторый SQL сервер, в котором хранится таблица, содержащая два поля "original" и "translation"
3)Первым делом сервер должен решить, а нет ли в словаре клиента новшеств или проблем. Полный список новшеств и проблем можно получить одним запросом, например таким:
select distinct C."original", C."translation" from
"temp"."client" as C
,"temp"."server" as S
where
(C."original" = S."original" and C."translation" != S."translation")
or
C."original" not in (
select "original" from "temp"."server"
);
Вопросы эффективности и скорострельности запроса можно пока не рассматривать. Важно, что это запрос дает ответ на главный вопрос: с клиентом есть непонимание по определенному набору слов "original". Решением этой коллизии должна заниматься другая SQL-процедура, которая проверяет слово новое или дают новый перевод уже известного слова.
4)Пункт 3 серверной программы считаем выполненным. Что в этом случае должен ответить сервер? С учетом ваших пожеланий, мы отправляем вам новый txt файл.
5)При этом сервер должен принять решение по поводу того, а не устарела ли у клиента его локальная база данных? Может быть ее пора обновлять? Это еще одна SQL-процедура, которая может появиться в этой задаче.

PS/ Сколько у вас тысяч слов в словаре - вопрос вторчный, когда речь идет о сервере.
Руслан Kreshchik
Руслан Kreshchik
70 110
Не совсем понятно зачем это надо, если у пользовательских машин всегда есть доступ в интернет, то проще запилить API и поставить клиента каждому, это будет логичнее и надежнее, чем танцевать с бубном вокруг текстовых файлов
Сергей Соловей https://yadi.sk/d/UeV_csIo3ab98G
Можете скачать и посмотреть у меня есть режим работы с API.Но мне надо увеличивать объём словаря программы.
Михаил Тарандушко Ты наверное время тоже ходишь в интернет смотреть? Наверное и не слышал, что иногда потребности возникают делать чтото локально... Московский мажор одним словом)
Михаил Тарандушко "проще запилить API и поставить клиента каждому" - клоун скинь разработку "проще") я посмотрю сколько у тебя времени уйдет Питоне чтобы такое написать
Хакер не доделанный, ты что брутфорс пишешь?
Жанибек Шарбактаев https://yadi.sk/d/UeV_csIo3ab98G говорю можешь скачать и посмотреть.