Hi!

I have a little questions about how does the SA work:

Example:
========
I borrowed a model from SA documentation example User/Address. My mapper
is

mapper(Address, addresses_table)
mapper(User, users_table, properties = {
        'addresses' : relation(Address, cascade="all, delete-orphan")
    }
  )

My example code:
----------------
u = User("a", "b")
u.addresses.append(Address("1","2","3","4"))
u.addresses.append(Address("1","2","3","4"))
session.save(u)
session.flush()
session.clear()
print "**********"
u = session.query(User).get_by_user_name("a")
session.delete(u)
session.flush()

Output:
-----------
BEGIN
INSERT INTO users (user_name, password) VALUES (?, ?)
['a', 'b']
INSERT INTO addresses (user_id, street, city, state, zip) VALUES
(?, ?, ?, ?, ?)
[1, '1', '2', '3', '4']
INSERT INTO addresses (user_id, street, city, state, zip) VALUES
(?, ?, ?, ?, ?)
[1, '1', '2', '3', '4']
COMMIT
**********
SELECT users.user_name AS users_user_name, users.password AS
users_password, users.user_id AS users_user_id 
FROM users 
WHERE users.user_name = ? ORDER BY users.oid 
 LIMIT 1 OFFSET 0
['a']
BEGIN
SELECT addresses.city AS addresses_city, addresses.address_id AS
addresses_address_id, addresses.user_id AS addresses_user_id,
addresses.zip AS addresses_zip, addresses.state AS addresses_state,
addresses.street AS addresses_street 
FROM addresses 
WHERE ? = addresses.user_id ORDER BY addresses.oid
[1]
DELETE FROM addresses WHERE addresses.address_id = ?
[[1], [2]]
DELETE FROM users WHERE users.user_id = ?
[1]
COMMIT

Question about deleting:
------------------------
1) Why does the SA the second SELECT for addresses to obtain primary
keys? Why there is not a direct "DELETE FROM addresses WHERE user_id=?"?
2) If it is neccessary to do this SELECT, why is the SA selecting all
columns? E.g. I will have 1 user with 100000 addresses - an idea of
selecting all 100000 addresses to get their id's is spooky :-)

Why is it so or em I missing something?

Thank you.

David


--~--~---------~--~----~------------~-------~--~----~
 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to