Djangoのconnectionでcolumn 〇〇 is of type date but expression is of type integer
今回はDjango+PostgreSQLの環境でconnectionを使ってSQLを流したときに、「column 〇〇 is of type date but expression is of type integer」というエラーが起きたときの原因と対処法についてご紹介いたします。
Djangoのバージョンは2系です。
Djangoのconnectionでcolumn 〇〇 is of type date but expression is of type integer
Djangoで生のSQLを流したときに、表題のエラーが出てしまいました。
私がやろうとしたことは、String型のSQLの文字列を用意して、
1 |
insert_sql = 'insert into 〇〇 (column1, column2, column3) values (%s, %s, %s)' % (1, 2, testDate) |
のような形で変数として格納し、cursorのexecuteを実行したときに表題のエラーが現れました。
column3はDate型のカラムが入り、testDateにはDate型のPythonの値が入っています。
しかしながら、エラーメッセージを読むとinteger型と解釈されてしまっているようです。
結論を書くと、
1 |
insert_sql = 'insert into 〇〇 (column1, column2, column3) values (%s, %s, %s)' % (1, 2, '"' + testDate.strftime('%Y-%m-%d') + '"') |
のようにtestDateに対してダブルクォーテーションで括ってやる必要があります。
考えてみれば当たり前ですが、見落としがちなので注意しましょう。
終わりに
今回はDjango+PostgreSQLの環境でconnectionを使ってSQLを流したときに、「column 〇〇 is of type date but expression is of type integer」というエラーが起きたときの原因と対処法についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません