Thanks,Mark--
You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To post to this group, send email to sqlal...@googlegroups.com.
To unsubscribe from this group, send email to sqlalchemy+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
On Oct 4, 2010, at 8:16 AM, Mark Erbaugh wrote:I have a table described with:BASE = declarative_base(name=APP_ID)class Period(BASE):__tablename__ = 'period'realperiod = Column(Integer, primary_key=True)cycle = Column(Integer)[more columns]I want to delete all records with a given value for the "cycle" column. With the SQLAlchemy session in the variable session and the desired cycle in y, I executeq = session.query(Period).filter(Period.cycle==y).delete()This correctly deletes the desired rows and returns the number of rows deleted; however, if I turn echo on I see the following SQL commands:SELECT period.realperiod AS period_realperiodFROM periodWHERE period.cycle = ?DELETE FROM period WHERE period.cycle = ?If I were doing this in SQL, I would to the first command asSELECT count(*)FROM periodWHERE period.cycle = ?to get the count of rows to be deleted so I am wondering if I am doing things correctly.Most relational databases report the number of rows matched by any UPDATE or DELETE statement that just executed, and SQLA acquires this value via cursor.rowcount on any such statement, so a separate count() call is not required.
To unsubscribe from this group, send email to sqlalchemy+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
SELECT period.realperiod AS period_realperiodFROM periodWHERE period.cycle = ?
Thanks. What is the purpose ofSELECT period.realperiod AS period_realperiodFROM periodWHERE period.cycle = ?that appears to be generated by the session.query ... call?
Why would you do this first?
Chris
--
You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To post to this group, send email to sqlal...@googlegroups.com.
I wasn't sure why SA was issuing a "select realperiod from period where period.cycle = ?" before deleting the records. I incorrectly assumed that it was trying to get the count of records to be deleted. Michael Bayer pointed out that cursor.rowcount was used to get that value and that the code in question was used by the session to keep the local (in memory) copy of the data up to date.
Mark