0

NULLになる可能性のある整数のフィールドを持つテーブルにいくつかの行を挿入しようとしています:

cur.execute("INSERT INTO mytable (id, priority) VALUES (%(id)d, %(priority)d)", \
            {'id': id, 'priority': priority})

優先度変数は、整数またはNone. これは、優先度が整数値の場合に機能しますNoneが、次のエラーが発生します。

internal error in 'BEGIN': int argument required

一般に、Python の文字列の書式設定では、書式設定する整数の値として使用できないことNoneに気付きました。pgdb がスローしているのと同じエラーがスローされます。ただし、フォーマット文字列を%(priority)sエラーに変更すると、次のように変更されます。

internal error in 'BEGIN': unsupported format character 'W' (0x57) at index 60

それは、文字列を整数フィールドにインポートしようとしているからだと思います。

NULL 値をインポートするにはどうすればよいですか?

4

1 に答える 1

1

通常、Postgresql は、整数列の文字列値を整数に自動的にキャストします。そのため、文字列パラメーターに整数が含まれているか、None である場合、整数列に %(priority)s のような文字列フォーマッターを使用することは一般的に安全です。文字列が None に設定されている場合、列には NULL が割り当てられます。

于 2012-07-02T01:46:30.057 に答える