Hi Simon,

Thanks for the reply.

I will try to better explain what I was trying to do:

   - Created a general class User, which has a index (id) and unique 
   attribute (email).
   - Created 2 sub-classes of User: Patient and Doctor, with primary 
   foreign key User.id.
   - Basic assumption was that a patient is never a Dr. and vise-versa, 
   hence if a user has registered as a Patient, he can never register as a Dr. 
   (and vise-versa).
   - The latter assumption was broken with a new requirement, that a user 
   may register with the same email both as a Dr. and a Patient.
   - As the tables were defined, it was possible (via MySQL commands) to 
   add entries for an existing user in the opposite table, simply by 
   specifying the user id upon insertion.

So, the question is how can I do the last step using SQLAlchemy supported 
methods. If this is a design issue, please explain and advise what should 
be changed in order to support this structure.

P.S. I changed the approach to solve this issue, but still want to gain 
better understanding of how to design and implement relationships). I've 
decided to completely separate the classes and remove the User class.

On Tuesday, December 1, 2015 at 11:45:15 AM UTC+2, Simon King wrote:
>
> I don't understand exactly what you are trying to do here, from a database 
> perspective. Your table setup suggests that you are using joined-table 
> inheritance:
>
>
> http://docs.sqlalchemy.org/en/rel_1_0/orm/inheritance.html#joined-table-inheritance
>
> ie. attributes that are common to all classes in the hierarchy live in the 
> base table, and attributes that are specific to one of the subclasses live 
> in a subclass-specific table. So when you have a user of type A, with id 1, 
> the common attributes will be in the user table with id 1, and the 
> A-specific attributes will be in the A table, again with id 1.
>
> If that's really what you've got, then it doesn't make any sense to create 
> a B object with an id of 1, since half of its identity would be the same 
> row as your A instance. I don't think SQLAlchemy will allow that.
>
> There are other inheritance patterns that might make sense for your 
> situation, or if you are trying to share state between and A and a B 
> instance then you probably don't want inheritance at all, but a shared 
> relationship instead. If you can tell us what you are trying to do, we 
> might be able to suggest an approach.
>
> Simon
>
> On Mon, Nov 30, 2015 at 4:46 PM, amit geron <amit....@gmail.com 
> <javascript:>> wrote:
>
>> As I already mentioned, I tried your suggestion but with no success. The 
>> names are unique anyway, and I don't understand the how it's related to my 
>> question..
>>
>> Could you please provide a working example that will demonstrate how 2 
>> objects inherit from the same class, and hold the same primary key that is 
>> a primary foreign key of the derived class?
>>
>>
>> On Monday, November 30, 2015 at 5:59:38 PM UTC+2, Jonathan Vanasco wrote:
>>>
>>> It should still work as a reference because the pacakge you use doesn't 
>>> override this.  
>>>
>>> The extension's API makes this clear:
>>>  http://flask-sqlalchemy.pocoo.org/2.1/api/#models
>>>
>>>
>>> _tablename__ 
>>> <http://flask-sqlalchemy.pocoo.org/2.1/api/#flask.ext.sqlalchemy.Model.__tablename__>
>>>
>>> The name of the table in the database. This is required by SQLAlchemy; 
>>> however, Flask-SQLAlchemy will set it automatically if a model has a 
>>> primary key defined. If the __table__ or __tablename__ is set 
>>> explicitly, that will be used instead.
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to sqlalchemy+...@googlegroups.com <javascript:>.
>> To post to this group, send email to sqlal...@googlegroups.com 
>> <javascript:>.
>> Visit this group at http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to