SQl Query для конкатенации нескольких строк с одинаковыми идентификаторами, но с разными значениями, которые имеют одинаковые поля даты

Легкий ответ: просто создайте таблицы базы данных самостоятельно, вместо того, чтобы sqlalchemy делать это с помощью metadata.create_all().

Если вы не считаете это приемлемым, я боюсь, что для него потребуется небольшое изменение в sqlalchemy.ext.declarative, или вам придется создать свой собственный метакласс и передать его на declarative_base() с аргументом ключевого слова metaclass. Этот класс будет использоваться вместо стандартного DeclarativeMeta.

Объяснение: sqlalchemy использует порядок создания свойств столбца, который он хранит в «приватном» атрибуте ._creation_order (генерируется, когда Column ( ) называется). Декларативное расширение смешивает столбцы, создавая копию объекта столбца из вашего класса mixin и добавляя его в класс. ._creation_order этой копии устанавливается на то же значение, что и исходное свойство класса mixin. Поскольку класс mixin, конечно, сначала создан, свойства столбца будут иметь более низкий порядок создания, чем подкласс.

Итак, чтобы сделать ваш запрос возможным, при создании копии следует назначить новый порядок создания, а не брать оригинал. Вы можете попробовать создать свой метакласс на основе этого объяснения и использовать его. Но вы также можете попробовать и спросить разработчиков sqlalchemy. Может быть, они готовы принять это как запрос об ошибке / функции? По крайней мере, это кажется как незначительная (одна строка), которая не имела бы никакого эффекта, кроме изменения, которое вы просите (что, возможно, тоже лучше).

0
задан savya Dhurve 13 July 2018 в 09:46
поделиться