python-snippet/sqla_test.py

51 lines
1.4 KiB
Python
Raw Normal View History

2018-09-11 10:46:28 +02:00
"""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()