Hello, I am using SQLAlchemy version 1.2.0b1 I created some mapped objects using the declarative style in SQLAlchemy. I have a mapping called ThermafuserReading which has a composed primary key made up of the Time_stamp column which is DateTime and ThermafuserId column which is an Integer and also acts as a Foreign Key to another table called Thermafuser. This is the definition of the class
class ThermafuserReading(Base): """Class to map to the Thermafuser Readings table in the HVAC DB""" __tablename__ = 'Thermafuser_Reading' _timestamp = Column('Time_stamp', DateTime, primary_key = True) _thermafuserId = Column('ThermafuserId', Integer, ForeignKey("Thermafuser.ThermafuserId"), primary_key = True) _roomOccupied = Column('RoomOccupied', Boolean) _zoneTemperature = Column('ZoneTemperature', Float) _supplyAir = Column('SupplyAir', Float, nullable=True) _airflowFeedback = Column('AirflowFeedback', Float, nullable=True) _CO2Input = Column('CO2Input', Float, nullable=True) _maxAirflow = Column('MaxAirflow', Float, nullable=True) _minAirflow = Column('MinAirflow', Float, nullable=True) _unoccupiedHeatingSetpoint = Column('UnoccupiedHeatingSetpoint', Float, nullable=True) _unoccupiedCoolingSetpoint = Column('UnoccupiedCoolingSetpoint', Float, nullable=True) _occupiedCoolingSetpoint = Column('OccupiedCoolingSetpoint', Float, nullable=True) _occupiedHeatingSetpoint = Column('OccupiedHeatingSetpoint', Float, nullable=True) _terminalLoad = Column('TerminalLoad', Float, nullable=True) #Relationship between Thermafuser Reading and Thermafuser _thermafuser = relationship("Thermafuser", back_populates = "_thermafuserReadings", cascade = "all, delete-orphan", single_parent = True) I am creating a session in the following way sqlengine = sqlalchemy.create_engine("mysql+mysqldb://user:password@localhost:3306/HVAC") Session = sessionmaker(bind=sqlengine) session = Session() At some point in my code I am creating a list called readings of Thermafuser Readings and adding such list the session via session.add_all(readings) This are some example elements printed from the list readings: for reading in readings: print(reading, mapper.identity_key_from_instance(reading)) <ThermafuserReading(thermafuserId = '1', timestamp = '2016-12-31 23:40:00')> (<class '__main__.ThermafuserReading'>, (datetime.datetime(2016, 12, 31, 23, 40), 1)) <ThermafuserReading(thermafuserId = '1', timestamp = '2016-12-31 23:45:00')> (<class '__main__.ThermafuserReading'>, (datetime.datetime(2016, 12, 31, 23, 45), 1)) <ThermafuserReading(thermafuserId = '1', timestamp = '2016-12-31 23:50:00')> (<class '__main__.ThermafuserReading'>, (datetime.datetime(2016, 12, 31, 23, 50), 1)) <ThermafuserReading(thermafuserId = '1', timestamp = '2016-12-31 23:55:00')> (<class '__main__.ThermafuserReading'>, (datetime.datetime(2016, 12, 31, 23, 55), 1)) <ThermafuserReading(thermafuserId = '1', timestamp = '2017-01-01 00:00:00')> (<class '__main__.ThermafuserReading'>, (datetime.datetime(2017, 1, 1, 0, 0), 1)) So far so go, the problem arises when I add readings to the session via session.add_all(readings). I only get the last element in my list added, e.g. for new in session.new: print(new, mapper.identity_key_from_instance(new_object)) <ThermafuserReading(thermafuserId = '1', timestamp = '2017-01-01 00:00:00')> (<class '__main__.ThermafuserReading'>, (datetime.datetime(2017, 1, 1, 0, 0), 1)) Why is this behavior? I have a test code and the test data in case its needed to reproduce this behavior -- 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 sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.