我正在使用SQLAlchmey以编程方式生成要在Postgresql中执行的SQL语句。到目前为止一切顺利,但是今天我不得不在SQL语句中创建并运行一些具有CASE .. WHEN .. ELSE ..
结构的语句。
我最初的要求是从一列中的不同时间格式创建时间格式,以便我的sql字符串如下所示
sql_String = """select
text_field_1,
case
when time_field like '%AM%' then to_timestamp(time_field, 'FMHH12:MI:SS AM')::time
when time_field like '%PM%' then to_timestamp(time_field, 'FMHH12:MI:SS AM')::time
else to_timestamp(time_field, 'FMHH24:MI:SS')::time
end as time_field
from
table_1"""
使用以下SQLAlchemy方法,
conn = pg_engine.connect()
trans = conn.begin()
conn.execute(sql_string)
trans.commit()
conn.close()
尝试了上面的代码,并且可以在Postgresql中使用。但是,当我执行SQL Alchemy时,会得到一个TypeError: 'dict' object does not support indexing
我也尝试了类似的CASE .. WHEN .. ELSE ..
语句,但该语句也具有非日期/时间列,并且存在相同的错误。
我做错什么了吗?