Re: [sqlalchemy] Re: Declarative: Joined Inheritance + Two Tables To One Object

2011-05-24 Thread Michael Bayer

On May 23, 2011, at 10:32 PM, Israel Ben Guilherme Fonseca wrote:

 D'oh, I figured myself, It was very easy. I just followed the guide again and 
 it worked. 
 
 One question though. Let's use the guide example for this:
 
 Let's say that AddressUser inherits(joined inheritance) from another class, 
 and that class have a id with the same name (user_id), I get a warning like 
 this:
 
 Implicitly combining column address.user_id with column superclass.user_id 
 under attribute 'user_id'.  This usage will be prohibited in 0.7.  Please 
 configure one or more attributes for these same-named columns explicitly.
 
 All ids are indeed, the same id so it seems ok for me. Why is it being 
 prohibited? Issued with advanced cases, or just to avoid hard-to-debug errors?

The map of the attribute id to two columns named id is based on their name 
alone, not that they actually have anything to do with each other.If they 
do relate to each other, then you're fine, but otherwise yes it totally can 
confuse people.This rule is suspended when using joined table inheritance 
since column names are already considered to be significant in that situation.


 
 
 2011/5/23 Israel Ben Guilherme Fonseca israel@gmail.com
 I have the following:
 
 class Person(Base):
__tablename__ = 'pessoa'
id = Column(id_person), Integer, primary_key = True)
name = Column(String)
 
 class Teacher(Person):
__tablename__ = 'teacher'
id = Column(id_teacher, Integer, ForeignKey(Person.id), primary_key=True)
info = Column(String)
 
 class Salary(Base):
__tablename__ = 'salary'
   id = Column(String)
   value = Column(Numeric)
 
 That's ok, but I wanted to merge the Salary and Teacher objects following the 
 guide:
 
 http://www.sqlalchemy.org/docs/06/orm/mapper_config.html#mapping-a-class-against-multiple-tables
 
 Am I forced to map the Teacher and Salary in the non-declarative mode to 
 achieve this? It's nice to keep things declarative, because it automatically 
 create the __init__ method with the columns as parameters.
 
 I have another classes that have relationships to those classes (and they are 
 declarative too), and things get nasty when I mix declarative with the 
 standard way.
 
 
 -- 
 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.

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



[sqlalchemy] Re: Declarative: Joined Inheritance + Two Tables To One Object

2011-05-23 Thread Israel Ben Guilherme Fonseca
D'oh, I figured myself, It was very easy. I just followed the guide again
and it worked.

One question though. Let's use the guide example for this:

Let's say that AddressUser inherits(joined inheritance) from another class,
and that class have a id with the same name (user_id), I get a warning like
this:

Implicitly combining column address.user_id with column superclass.user_id
under attribute 'user_id'.  This usage will be prohibited in 0.7.  Please
configure one or more attributes for these same-named columns explicitly.

All ids are indeed, the same id so it seems ok for me. Why is it being
prohibited? Issued with advanced cases, or just to avoid hard-to-debug
errors?


2011/5/23 Israel Ben Guilherme Fonseca israel@gmail.com

 I have the following:

 class Person(Base):
__tablename__ = 'pessoa'
id = Column(id_person), Integer, primary_key = True)
name = Column(String)

 class Teacher(Person):
__tablename__ = 'teacher'
id = Column(id_teacher, Integer, ForeignKey(Person.id),
 primary_key=True)
info = Column(String)

 class Salary(Base):
__tablename__ = 'salary'
   id = Column(String)
   value = Column(Numeric)

 That's ok, but I wanted to merge the Salary and Teacher objects following
 the guide:


 http://www.sqlalchemy.org/docs/06/orm/mapper_config.html#mapping-a-class-against-multiple-tables

 Am I forced to map the Teacher and Salary in the non-declarative mode to
 achieve this? It's nice to keep things declarative, because it automatically
 create the __init__ method with the columns as parameters.

 I have another classes that have relationships to those classes (and they
 are declarative too), and things get nasty when I mix declarative with the
 standard way.


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