- add marshmallow-sqlalchemy marshmallow for inserting db data via deserialization
This commit is contained in:
parent
c62eb2cdb0
commit
1dafc5824c
10 changed files with 118 additions and 189 deletions
66
db/fb_models.py
Normal file
66
db/fb_models.py
Normal file
|
@ -0,0 +1,66 @@
|
|||
'''
|
||||
Tutorial link: https://docs.sqlalchemy.org/en/latest/orm/tutorial.html
|
||||
Sqlalchemy version: 1.2.15
|
||||
Python version: 3.7
|
||||
'''
|
||||
import os
|
||||
import datetime
|
||||
from sqlalchemy import (create_engine, Column, Integer,
|
||||
String, ForeignKey, Time, Date)
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker, relationship
|
||||
import sqlalchemy.orm.session
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
|
||||
class Catena(Base):
|
||||
""" catena class """
|
||||
__tablename__ = 'CATENE'
|
||||
|
||||
id = Column('CHIAVE', Integer, primary_key=True)
|
||||
name = Column('NOME', String)
|
||||
observations = relationship('FbObservation')
|
||||
|
||||
def __repr__(self): # optional
|
||||
return f'Catena {self.name}'
|
||||
|
||||
|
||||
class FbObservation(Base):
|
||||
""" FbObservation class """
|
||||
__tablename__ = 'DATI_ACQUISITI'
|
||||
|
||||
# id = Column(Integer, primary_key=True) # obligatory
|
||||
pitch = Column('PITCH', String)
|
||||
roll = Column('ROLL', String)
|
||||
ora = Column('ORA', Time, primary_key=True)
|
||||
sensore = Column('SENSORE', Integer, primary_key=True)
|
||||
data = Column('DATA', Date)
|
||||
temperature = Column('TEMPERATURA', String)
|
||||
|
||||
chiave_id = Column('CATENA', Integer, ForeignKey('CATENE.CHIAVE'))
|
||||
catena = relationship("Catena", lazy="joined", foreign_keys=[chiave_id])
|
||||
|
||||
def __repr__(self): # optional
|
||||
return f'FbObservation {self.roll}'
|
||||
|
||||
@property
|
||||
def result_time(self):
|
||||
''' Create a datetime object '''
|
||||
start_datetime = datetime.datetime.combine(self.data, self.ora)
|
||||
return start_datetime
|
||||
|
||||
|
||||
def create_session() -> sqlalchemy.orm.session:
|
||||
"""Return the sum of x and y."""
|
||||
# engine = create_engine('sqlite:///:memory:')
|
||||
db_user = os.environ.get("FDB_DBUSER")
|
||||
db_password = os.environ.get("FDB_DBPASSWORD")
|
||||
db_url = os.environ.get("FDB_DBURL")
|
||||
engine = create_engine(
|
||||
"firebird+fdb://" + db_user + ":" + db_password + "@" + db_url)
|
||||
session_maker = sessionmaker(bind=engine)
|
||||
session = session_maker()
|
||||
|
||||
Base.metadata.create_all(engine)
|
||||
return session
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue