diff --git a/sqla_test.py b/sqla_test.py new file mode 100644 index 0000000..642e120 --- /dev/null +++ b/sqla_test.py @@ -0,0 +1,50 @@ +"""Tiny code to test SQLAlchemy""" + +from datetime import datetime + +from sqlalchemy import Column, DateTime, String, Integer, Float, Boolean, ForeignKey +from sqlalchemy.orm import relationship, backref +from sqlalchemy.ext.declarative import declarative_base + + +Base = declarative_base() + + +class Sensor(Base): + __tablename__ = 'sensor' + address = Column(Integer, primary_key=True) + type = Column(String) + zone = Column(String) + + +class Record(Base): + __tablename__ = 'record' + id = Column(Integer, primary_key=True) + datetime = Column(DateTime) + address = Column(Integer, ForeignKey('sensor.address')) + sensor = relationship(Sensor, backref=backref('records', uselist=True)) + valid_auth = Column(Boolean) + value = Column(Float) + + +if __name__ == "__main__": + from sqlalchemy import create_engine + from sqlalchemy.orm import sessionmaker + + engine = create_engine('sqlite:///') + session = sessionmaker() + session.configure(bind=engine) + Base.metadata.create_all(engine) + + s = session() + + zones = ['chambre', 'salon', 'cuisine'] + sensors = [161, 162, 163] + for zone, address in zip(zones, sensors): + s.add(Sensor(address=address, type='temp', zone=zone)) + s.commit() + + for sensor in s.query(Sensor).all(): + print(f"{sensor.address}: type={sensor.type}, zone={sensor.zone}") + + s.close()