Я создаю API для отдыха с помощью Flask SQLAlchemy и PostGreSQL.
История моей таблицы
![table_history](https://i.stack.imgur.com/qIeee.png)
class H(db.Model):
__tablename__ = "history"
id = db.Column(
db.Integer,
primary_key=True,
autoincrement=True
)
one_data = db.Column(
db.Integer,
nullable=False
)
count = db.Column(
db.Integer
)
Мое правило:
CREATE OR REPLACE RULE history_no_duplicate
AS ON INSERT TO history WHERE
EXISTS ( SELECT 1 FROM history WHERE count = NEW.count)
DO INSTEAD NOTHING
Непосредственно в SQL все вставки работают.
Мой код SQLAlchemy для вставки данных:
def save(history_data):
db.engine.execute(
db.insert(
History.__table__, history_data
)
)
save({
"one_data": 1,
"count": 1
})
Без правила этот скрипт работает, но когда я вставляю правило, SQL Alchemy возвращает ошибку:
sqlalchemy.exc.NotSupportedError: (psycopg2.NotSupportedError) cannot perform INSERT RETURNING on relation "history"
HINT: You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause.