python - 如何根据插入的内容确定 SQL 列值的优先级?

标签 python sql sqlalchemy

我正在创建一个功能请求 Web 应用程序,其中使用 SQL 来处理功能请求。 这就是我的 table 的样子。

enter image description here

我有“id、标题、描述、客户、clientPriority、日期等。

假设“客户端 1”请求某些功能并将 clientPriority 设置为“1”。然后他们第二天回来请求另一个功能并希望将优先级设置为“1”。因此,优先级“1”所请求的第一个功能应下推至“2”。用sql可以实现这个功能吗?如果是这样,我怎样才能用sql表来完成这个?

我正在使用 Python sqlAlchemy。

最佳答案

那么您必须在一个事务中运行 2 个查询。

首先它要移动优先级 @priority 是您要插入的内容(可以是 1 或任何值)。以下假设您想要移动整个堆栈。这是有道理的。如果要移动一个,修改为“=”。

BEGIN TRANSACTION

UPDATE tableName 
SET ClientPriority = ClientPriority + 1 
WHERE ClientPriority >= @priority

INSERT INTO tableName (feature, priority) 
VALUES @feature, @priority

COMMIT TRANSACTION

在炼金术中,它是相同的,只是流利 session =交易,所以一旦你打开它就很好了。 http://docs.sqlalchemy.org/en/latest/orm/session_transaction.html

tablename.update().where(ClientPriority>=@priority).   values(ClientPriority=ClientPriority+1)
tablename.insert.values(feature=@feature, ClientPriority=@priority)

添加触发器作为 Neel Patel 评论的最终解决方案:

@event.listens_for(RequestedFeatures, 'before_insert') def receive_before_insert(mapper, connection, target): query = "UPDATE features SET clientPriority = (clientPriority + 1) WHERE client = '" query += target.client + "' AND clientPriority >= " + str(target.clientPriority) qr = session.execute(query) session.commit() 

关于python - 如何根据插入的内容确定 SQL 列值的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680516/

相关文章:

python - Django 1.4 : I get an error in queryset extra

Python Pandas - 使用 to_sql 以 block 的形式写入大数据帧

python - 在更新/插入时修改其他对象

python - SQLAlchemy 和 limit()

python - SQLAlchemy 如何按多对多的 child 进行过滤

python - 使用 matplotlib 对 Latex 进行像素渲染

python - 在 Django 模板中迭代 dict 时遇到问题

python - 如何退出 if 子句

sql - 我怎样才能做下面的查询来获取所需的信息

sql - 6 个最高最小平均元素 postgresql