質問: ('new_col',) cur2.execute(sql_alt,new_col) ``` ひょっとしてalter文だけ「?」を使って変数定義できないのでしょうか? ご指導よろしくお願いいたします。
回答: 基本的に,DataBase上で定義された文字は ? で置き換えられないと考えたほうがいいかもしれません. 例えば,テーブル名やカラム名などはデータベース上で定義された文字なので,? を使って変数を挿入できません.? が使えるのはあくまでパラメータのみでしょう. こういう時はpython文字列 %s を使えば解決できます. 質問者様のクエリーを例に書き直してみます. ``` cur2.execute("alter table 各号機の時系列 add column %s char(50)" % new_col) ``` ただ,セキュリティを考えると,クエリーに文字列を使うこと自体があまりよくないみたいなので,多用するのは控えたほうがいいかもしれませんね. 一応,レファレンスも載っけておきます.