51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
"""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()
|