Как добавить большой массив в запрос SQL? - PullRequest
0 голосов
/ 29 января 2010

Это мой штормовый код:

items = store.find((Delivery, Product, Sum(Delivery.quantity)),
                    Delivery.id.is_in(order.id for order in self.orders),
                    Product.id == Delivery.product_id) \
                    .group_by(Delivery.date, Product.id, Delivery.discount) \
                    .order_by(Delivery.date, Product.name, Delivery.discount)

Это означает примерно следующий SQL:

   SELECT deliveries.id, products.id, SUM(deliveries.quantity)
   FROM deliveries, products
   WHERE products.id = deliveries.id AND
->       deliveries.id IN (1,10,5,24,122, ...)
   GROUP BY deliveries.date, product.id, delivery.discount
   ORDER BY deliveries.date, product.id, delivery.discount

Если self.orders слишком длинный, Слишком много переменных SQL Возникает исключение.

Есть ли альтернативный способ добиться этого?

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

Ответы [ 2 ]

1 голос
/ 29 января 2010
  • Добавьте его во временную переменную таблицы / таблицы и создайте ссылку на нее.
  • В зависимости от версии SQL вы можете использовать объект XML
0 голосов
/ 29 января 2010

Может, просто разбить этот целевой массив на более мелкие? Что-то около 1/3 его размера, а затем объединить в сторону сценария.

...