SQLA can execute your query as text. For an existing query like this, I'd stick with that unless you require DB-neutral behavior or other malleability. The constructs used would be the standard Table objects, join objects, etc. all described in the SQL Expression Tutorial.
Marcin Krol wrote: > > Hello everyone? > > I need to translate following complex query into SQLA. How do I do that? > > SELECT h.id AS hosts_id, h.ip AS hosts_ip, h.hostname AS hosts_hostname, > h.location AS hosts_location, h.architecture_id AS > hosts_architecture_id, h.os_kind_id AS hosts_os_kind_id, h.os_version_id > AS hosts_os_version_id, h.additional_info AS hosts_additional_info, > h.column_12 AS hosts_column_12, h.column_13 AS hosts_column_13, > h.username AS hosts_username, h.password AS hosts_password, h.alias AS > hosts_alias, h.virtualization_id AS hosts_virtualization_id, h.shareable > AS hosts_shareable, h.shareable_between_projects AS > hosts_shareable_between_projects, h.notes AS hosts_notes, h.cpu AS > hosts_cpu, h.ram AS hosts_ram, h.column_24 AS hosts_column_24, h.batch > AS hosts_batch, h.asset AS hosts_asset, h.owner AS hosts_owner, > h.ssh_key_present AS hosts_ssh_key_present, h.machine_type_model AS > hosts_machine_type_model, h.mac_address_eth_0 AS > hosts_mac_address_eth_0, h.physical_box AS hosts_physical_box, > h.up_n_running AS hosts_up_n_running, h.available AS hosts_available, > h.project_id AS hosts_project_id, architecture.id AS architecture_id, > architecture.architecture AS architecture_architecture, os_kind.id AS > os_kind_id, os_kind.os_kind AS os_kind_os_kind, os_version.id AS > os_version_id, os_version.os_version AS os_version_os_version, > virtualization.id AS virtualization_id, virtualization.virtualization AS > virtualization_virtualization, virtualization.color AS > virtualization_color, project.id AS project_id, project.project AS > project_project, email.id AS email_id, email.email AS email_email, > rh.reservation_id AS reservation_id, r.start_date AS > reservation_start_date, r.end_date AS reservation_end_date, r.status AS > reservation_status, r.businessneed AS reservation_businessneed, > r.notetohwrep AS reservation_notetohwrep, r.email_id AS > reservation_email_id, r.project_id AS reservation_project_id > > FROM hosts h > LEFT OUTER JOIN reservation_hosts rh ON h.id = rh.host_id > LEFT OUTER JOIN reservation r ON r.id = rh.reservation_id > INNER JOIN > > (SELECT h.id, MIN(r.start_date) FROM hosts h > LEFT OUTER JOIN reservation_hosts rh ON rh.host_id = h.id > LEFT OUTER JOIN reservation r ON rh.reservation_id = r.id GROUP BY h.id > ORDER BY h.id) AS min_date(m_host_id, m_start_date) > > ON h.id = min_date.m_host_id AND (r.start_date = min_date.m_start_date > AND (r.start_date,r.end_date) OVERLAPS ('2009-04-10'::date, > '2010-04-10'::date) OR min_date.m_start_date IS NULL) > > INNER JOIN architecture ON architecture.id = h.architecture_id > INNER JOIN os_kind ON h.os_kind_id = os_kind.id > INNER JOIN os_version ON h.os_version_id = os_version.id > INNER JOIN virtualization ON h.virtualization_id = virtualization.id > INNER JOIN project ON h.project_id = project.id AND project.project = > 'LMT' > LEFT OUTER JOIN email ON r.email_id = email.id > > WHERE h.id NOT IN ( > SELECT m.host_id > FROM reservation r, reservation_hosts m > WHERE r.id = m.reservation_id > AND m.host_id IS NOT NULL > AND (r.start_date <= '2009-04-10'::date AND r.end_date > > '2009-04-11'::date) > ORDER BY h.id, r.start_date) > > > AND h.up_n_running = True AND h.shareable = True ORDER BY virtualization > DESC, ip ASC > > Regards, > mk > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---