I've this error: ProgrammingError: (ProgrammingError) subquery in FROM must have an alias HINT: For example, FROM (SELECT ...) [AS] foo. 'DELETE FROM winancial_integ.acc_transactions WHERE EXISTS (SELECT 1 \nFROM (SELECT winancial_integ.acc_transactions.transaction_id AS transaction_id, ...
The API in 0.5 is very good. On May 13, 4:41 pm, Michael Bayer <[EMAIL PROTECTED]> wrote: > On May 13, 2008, at 9:08 AM, jean-philippe dutreve wrote: > > > > > I'd like to delete all Transactions contained in an account hierarchy > > without loading any transaction into memory, just DB work with the SQL > > DELETE request constructed by SA. > > > The query that defines the transactions is: > > Session.query(Transaction).join(['entries','account','root'], > > aliased=True).filter_by(account_id=1).all() > > > How can I use it to construct and execute the DELETE statement? > > To use the Query directly in 0.4 (as opposed to constructing the > equivalent select() construct) is a little awkward: > > q = Session.query(Transaction).join(['entries','account','root'], > aliased=True).filter_by(account_id=1) > stmt = q.statement > stmt.use_labels = False > > Session.execute(transaction_table.delete().where(exists([1], > Transaction.id==stmt.c.id)) > > in 0.5 you can do this in a few ways: > > q = Session.query(Transaction.id).join(...).filter(...) > Session.execute(table.delete().where(Transaction.id.in_(q.statement))) > > or if you're on Oracle which doesn't like "IN (SELECT ...)": > > ta = aliased(Transaction) > q = Session.query(ta.id).join(...).filter(...) > stmt = q.statement > Session > .execute(table.delete().where(exists(stmt.where(ta.id==Transaction.id))) --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---