我在一个小的Python程序中有以下内容

def insert_data(self, timestamp, temperature, humidity):
    self.cursor.execute("""
      INSERT INTO sensor_data(timestamp, temperature, humidity)
      VALUES (?,?,?)""",(timestamp, temperature,humidity))
    self.conn.commit()

我已经在数据库中添加了一个名为"冻结"的列.

我想将INSERT语句修改为使用CASE,这样当温度为<=32时,冻结列的值为"冻结",否则为"不冻结".

我一般都很清楚如何直接使用case语句,但我不确定它们与占位符一起使用的情况.

充分披露:这是使用CASE个语句的家庭作业(job)的一部分.还有更多的事情,所以我不是在要求你做我的作业(job)!但解决方案必须使用CASE...

推荐答案

我认为您可以直接将CASE语句集成到INSERT查询的VALUES部分,它将判断温度条件,并根据您要插入的温度值返回"冻结"或"未冻结":

def insert_data(self, timestamp, temperature, humidity):
    self.cursor.execute("""
      INSERT INTO sensor_data(timestamp, temperature, humidity, freezing)
      VALUES (?, ?, ?, CASE WHEN ? <= 32 THEN 'freezing' ELSE 'not freezing' END)""",
      (timestamp, temperature, humidity, temperature))
    self.conn.commit()

Sql相关问答推荐

在SQL中创建一个计数器,根据BigQuery/SQL中的条件递归地添加行值

使用WHERE子句进行筛选时,SQL SELECT查询返回总计数

Select 非重复值并按条件排除行

正在编写查询.我需要将订阅的时间段分为第一个订阅中包含的另一个订阅之前和之后的时间段

对多个条件的SQL进行排名

明细表中没有记录如何更新主表的值为0

按用户和时间列出的SQL Group考勤列表

如何在多列上编写具有不同条件的查询?

输出连续出现两次以上的行

特殊条件计算小计

在没有订单的情况下,如何生成一个值为0的顾客天数行

所有列分组的简写?

当该日期的至少两条记录具有相同的持续时间或至少一条记录的持续时间为 0 时,如何标记该日期的所有记录

在 MS Access VBA 中,如何测量显示查询的时间?

如何将特定值从 JSON 列中的一个字段移动到 PostgreSQL 中的另一个字段?

连续期间的缺口

如何仅在满足条件时才按顺序在 SQL 中计数?

如何根据 Amazon Athena 中的多个列值删除重复行?

Lag() 获取snowflake的值变化

当我按 PK 分组时,该表中的所有列在每个组中都具有相同的值.那么为什么 SQL Server 需要对这些列进行聚合呢?