Я хочу вставить данные в мою базу данных postgres из запроса через сеанс SQLAlchemy, как это.
Это мои модели:
class TestModel(Base):
__tablename__ = 'test_model'
timestamp = Column(Numeric, primary_key=True)
num1 = Column(Numeric)
num2 = Column(Numeric)
def __init__(self, timestamp, num1, num2):
self.timestamp = timestamp
self.num1 = num1
self.num2 = num2
class QueryModel(Base):
__tablename__ = 'query_model'
date = Column(Date, primary_key=True)
num1 = Column(Numeric)
num2 = Column(Numeric)
def __init__(self, date, num1, num2):
self.date = date
self.num1 = num1
self.num2 = num2
Что я хочу сделать, это "поставить"результат моего запроса в мою модель и ВСТАВИТЬ или ОБНОВИТЬ его в таблицу QueryResult.
query = """select to_date(timestamp::text, 'YYYYMMDDHH24') as date
,sum(num1) as num1
,avg(num2) as num2
from test_model
group by date"""
with get_session() as session:
result = session.query(QueryModel).from_statement(query).all()
for i in result:
i.num2 = i.num1 + i.num2
session.add(i)
session.commit()
Я получаю следующее исключение: sqlalchemy.orm.exc.StaleDataError: оператор UPDATE для таблицы 'query_modelожидается обновление 1 строки;Было найдено 0 совпадений.
Я читал об этом в этой теме stackoverflow , но мой случай другой.Я не запрашиваю ту же таблицу, что и в определенной модели.Поэтому в идеале SQLAlchemy должна выполнять вставку вместо обновления.
Есть ли способ решить эту проблему?