文字列フォーマットで一文がとても長くなる場合

文字列フォーマットを利用していると、たまに一文がものすごく長くなる時がある。
特にDBと連携するようなとき。

何とかしたいなーということで調べてみたので、備忘録として。
作りたい文字列↓

INSERT INTO table(datetime,key,value) VALUES(to_timestamp(date,'YYYY-MM-DD'),key,value);

これを普通に文字列フォーマットで書くと↓のようになってとても長い。

sql = "INSERT INTO %s(datetime,key,value) VALUES(to_timestamp('%s','YYYY-MM-DD'),%s,%s);" % (table,date,key,value)

特にifやforの中で書く場合には更に長く感じる。

これを解消するには、文字列フォーマットにディクショナリを利用する。

sql = "INSERT INTO %(table)s(datetime,key,value) VALUES(to_timestamp('%(date)s','YYYY-MM-DD'),%(key)s,%(value)s;"
values = {'table':table,'date':date,'key':key,'value':value}
print sql % values

これで作りたい文字列が作成される。