1

私は最近、いくつかの追加プロパティを含むようにエンティティモデルを更新し、何か奇妙なことに気付きました。一度も書き込まれていないプロパティの場合、Datastoreクエリページには「 - 」が表示されますが、Pythonで明示的にNoneに設定したものの場合は「null」と表示されます。Google App EngineのNDBデータストアに、不明なデータの「 - 」と「null」の両方があるのはなぜですか?

SQLでは、これらのケースの両方がnullになります。両方のタイプの不明なプロパティを持つエンティティにクエリを実行すると、両方ともNoneと解釈され、そのアイデアに合致します。

なぜNDBデータストアビューアは、プログラムで区別できない場合、「書かれていない」と「Noneに設定されています」を区別しますか?

+2

GAEは*キーと値のペアを実際に格納します*これらはオブジェクトごとにまとめられています。キーと値のペアが存在しない場合は、NULLを指すキーと値のペアとは異なります。 –

答えて

4

特に値をNULLに設定する必要があります。そうでない場合、データストアには保存されず、データストアビューアには表示されません。

これは重要な違いです。 NULL値は索引付けすることができるため、生年月日がnullなどのエンティティのリストを取得できます。一方、未知のときに生年月日を設定しないと、生年月日不足のエンティティのリストを取得する方法がありません。すべてのエンティティを繰り返し検索する必要があります。

もう1つの違いは、NULL値はデータストア内にスペースをとりますが、欠損値はスペースではありません。

関連する問題