パラメータリストを含むexecute文を使用して値リストからデータを一括更新すると、値リストのnull値がデータ型varcharとみなされ、非varchar列、たとえば倍精度です。例は次のようになります。このクエリからnull値の値リストから更新するときのpostgresqlデータ型エラー
create table mytable (mykey varchar, myvalue double precision);
cur.execute("""update mytable t set (myvalue)=(v.myvalue) from (values %s, %s) v (mykey, myvalue) where t.mykey = v.mykey""", ([('key1', None),('key2', None)]))
エラーは次のとおりです。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
psycopg2.ProgrammingError: column "myvalue" is of type double precision but expression is of type text
LINE 1: update mytable t set (myvalue)=(v.myvalue) from (values ('ke...
^
HINT: You will need to rewrite or cast the expression.
どのように私は、値リストでNULL値のデータ型を指定することができますか?
無関係が、 –