我试图传递一个在WHERE语句中使用的值元组,这就是cursor.mogrify()返回给我的内容:
b'SELECT site_id,site_name,date,time,* FROM "SiteInfoSchema"."Compressor"
WHERE site_id in (\'TSE-000027, TSE-000032, TSE-000030, TSE-000031, TSE-
000034, TSE-000033, TSE-000019, TSE-000020, TSE-000055, TSE-000021, TSE-
000036, TSE-000035, TSE-000070, TSE-000003, TSE-000047, TSE-000029, TSE-
000023, TSE-000038, TSE-000045, TSE-000046, TSE-000024, TSE-000022, TSE-
000025, TSE-000028, TSE-000026, TSE-000017, TSE-000069, TSE-000054, TSE-
000037, TSE-000018\') AND device_id = \'1\' AND date >= \'2018-05-02\' and
date <= \'2018-05-02\' ;'正如你所看到的,东京证交所-*都被认为是一个论点。我将字典传递给execute(),但是保存TSE-*值的命名参数的元组会导致一个错误,并且试图使用一个带有“‘’”的字符串,因为它也会对它们进行转义。我没有运气就试过各种各样的东西。任何洞察力都是值得欣赏的!
发布于 2018-05-02 19:05:03
传递一个tuple以展开IN列表:
sql = 'SELECT * FROM Compressor WHERE site_id IN %(sites)s'
cur.execute(sql, { 'sites': tuple(sites.keys()), })https://stackoverflow.com/questions/50141689
复制相似问题