Ядро SQLAlchemy: объедините три столбца, чтобы они действовали как один - PullRequest
0 голосов
/ 26 марта 2020

Я использую ядро ​​SQLAlchemy и текущее приложение c (dask.dataframe.read_sql_table), мне нужно передать его в виде единственного столбца / можно выбрать в качестве поля индекса. Одна из таблиц, из которых я выбираю, является большой, но имеет только один уникальный ключ, который является составным ключом.

DDL для задействованных столбцов:

CREATE TABLE `TABLENAME` (
  `FIRST_ID` int(10) unsigned NOT NULL,
  `SECOND_ID` int(10) unsigned NOT NULL,
  `OTHER_ID` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`FIRST_ID`,`SECOND_ID`,`OTHER_ID`),
  KEY `FK_NAST_SECOND_ID` (`SECOND_ID`),
  KEY `FIRST_ID_index` (`FIRST_ID`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 

У меня есть план, если я могу mimi c строковый столбец и иметь logi c, который принимает строковый ввод в указанном шаблоне c FIRST_ID-SECOND_ID-OTHER_ID, разбивает его на три столбца и выдает значения для каждого столбца, чтобы вместо MySQL получить инструкцию where, которая:

SELECT * from TABLENAME where CONCAT(FIRST_ID,'-',SECOND_ID,'-',OTHER_ID) = "1234-12-0"

(я не Не думаю, что это даже верно, но оно дает представление об этом)

Вместо MySQL получается:

SELECT * from TABLENAME where FIRST_ID = 1234 and SECOND_ID = 12 and OTHER_ID = 0;

Фактическая логика c Я могу выбить себя, просто зная, как Я могу обернуть логи c внутри какой-то фальшивой конструкции столбца - это главная проблема.

Поскольку в этой таблице нет уникальных ключей для одного столбца, это лучшая идея, которую я придумала, поэтому, если есть лучший способ представить ее в SQLAlchemy Core для Dask, то я весь в ушах!

1 Ответ

0 голосов
/ 26 марта 2020

Оказывается, я это слишком усложнил. Pandas и Dask не возражают против дублирования элементов в индексе, так что в этом не было необходимости. Для полного дампа таблицы мне нужно только указать имя таблицы и имя столбца, если это числовой индекс c, индексированный столбец. Если это что-то еще, вам может потребоваться определить подразделения или тому подобное, но в противном случае вы можете позволить Dask делать свое дело, и это удивительно.

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