Thank you for the reply.
The lack of foreign keys must be some bug of pastecode.xyz, because if you
see it on the browser or on "raw", they are indeed set just like your
suggestion.
The issue is that I cannot manage to add a second ForeignKey('sensor.id') to
the tables batmon/radmon/deported, or figure out how to declare the
relationship in the sensor table in order to point to the correct
batmon/radmon or deported entry.
On Wednesday, August 22, 2018 at 5:22:07 PM UTC+2, Mike Bayer wrote:
>
> On Wed, Aug 22, 2018 at 5:50 AM, Alexios Damigos <[email protected]
> <javascript:>> wrote:
> > Hello everyone,
> >
> > I have been trying to create a model for my database, with no luck so
> far.
> > I am using SQLAlchemy 1.2.10 together with PyMySQL 0.9.2 to connect to a
> > MariaDB database.
> >
> > A description of the database model:
> >
> > Table A (components)
> > id brand status
> > N1 br3 free
> > N2 br2 used
> > N3 br2 used
> > N4 br3 used
> > N5 br2 used
> > N6 br3 used
> > N7 br2 used
> >
> >
> > Table B (device1)
> > id comp1 comp2
> > 2 N2 N3
> >
> > Table C (device2)
> > id comp1 comp2
> > 6 N4 N5
> >
> > Table D (device3)
> > id comp1 comp2
> > 1 N6 N7
> >
> > So there are two foreign keys pointing to the same table (A) and column
> for
> > all the other three tables, and every item on table A can only be
> assigned
> > to a singe component column of a single table B, C or D.
> >
> > Ideally what I would like to achieve is something like this:
> >
> > component1 -> <N2 br2 used>
> > component1.deviceInstalled -> <2 N2 N3> (from table B)
> > component2 -> <N4 br3 used>
> > component2.deviceInstalled -> <6 N4 N5> (from table C)
> >
> > I tried following the guidelines in Multiple Join Paths, still got
> ambiguous
> > foreign keys error.
> > As far as the relationship deviceInstalled, I have not managed to find
> > somewhere how to implement that, since it has to span across three
> tables.
> >
> >
> > My working but incomplete code at the moment, with all the failed
> attempts
> > removed.
>
> Looking at the code, I dont know what:
>
> ForeignKey('')
>
> means, I guess that means you don't know which table to refer towards?
>
> if batmon/radmon/deported are B, C, and D, and "Sensor" is not part of
> the problem, just make them FK's to"Device"? Here's that
>
>
> from sqlalchemy import *
> from sqlalchemy.orm import *
> from sqlalchemy.ext.declarative import declarative_base
> from sqlalchemy.ext.declarative import declared_attr
>
> Model = declarative_base()
>
>
> class Device(Model):
> __tablename__ = 'device'
>
> id = Column(Integer, primary_key=True)
> type = Column(String(30), unique=False, nullable=False)
> variant = Column(String(30), unique=False, nullable=True)
> serialNo = Column(String(30), unique=True, nullable=False)
>
> batmonConf = relationship('Batmon', backref='device',
> uselist=False, lazy=True)
> radmonConf = relationship('Radmon', backref='device',
> uselist=False, lazy=True)
> deportedConf = relationship('Deported', backref='device',
> uselist=False, lazy=True)
>
>
> class Batmon(Model):
> __tablename__ = 'batmon'
>
> id = Column(Integer, ForeignKey('device.id'), primary_key=True)
> voltage = Column(Integer, unique=False, nullable=False)
> fet1 = Column(String(20), ForeignKey(''), unique=True)
> fet2 = Column(String(20), unique=True, nullable=True)
> pin = Column(String(20), unique=True, nullable=True)
> mem1 = Column(String(20), unique=True, nullable=True)
> mem2 = Column(String(20), unique=True, nullable=True)
>
>
> class Radmon(Model):
> __tablename__ = 'radmon'
>
> id = Column(Integer, ForeignKey('device.id'), primary_key=True)
> fet1 = Column(String(20), unique=True, nullable=True)
> fet2 = Column(String(20), unique=True, nullable=True)
> pin = Column(String(20), unique=True, nullable=True)
> mem1 = Column(String(20), unique=True, nullable=True)
> mem2 = Column(String(20), unique=True, nullable=True)
>
>
> class Deported(Model):
> __tablename__ = 'deported'
>
> id = Column(Integer, ForeignKey('device.id'), primary_key=True)
> fet1 = Column(String(20), unique=True, nullable=True)
> fet2 = Column(String(20), unique=True, nullable=True)
> pin = Column(String(20), unique=True, nullable=True)
>
>
> configure_mappers()
>
>
>
>
> >
> > Any help would be very much appreciated, as I have been trying for a
> couple
> > of days with no luck!
> > Thank you
> >
> > --
> > SQLAlchemy -
> > The Python SQL Toolkit and Object Relational Mapper
> >
> > http://www.sqlalchemy.org/
> >
> > To post example code, please provide an MCVE: Minimal, Complete, and
> > Verifiable Example. See http://stackoverflow.com/help/mcve for a full
> > description.
> > ---
> > 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 [email protected] <javascript:>.
> > To post to this group, send email to [email protected]
> <javascript:>.
> > Visit this group at https://groups.google.com/group/sqlalchemy.
> > For more options, visit https://groups.google.com/d/optout.
>
--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper
http://www.sqlalchemy.org/
To post example code, please provide an MCVE: Minimal, Complete, and Verifiable
Example. See http://stackoverflow.com/help/mcve for a full description.
---
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.