google.appengine.api.datastore_types モジュール

概要

データストアの上位レベルのセマンティック データ型。これらの型は、エンティティの属性として設定されることが期待されます。API ガイドの「サポートされているデータ型」を参照してください。

これらの型のほとんどは、atom と gd の名前空間からの Atom と GData の要素の XML 要素に基づいています。詳細については、次をご覧ください。

http://www.atomenabled.org/developers/syndication/ http://code.google.com/apis/gdata/common-elements.html

名前空間のスキーマは次のとおりです。

http://www.w3.org/2005/Atom http://schemas.google.com/g/2005

内容

class google.appengine.api.datastore_types.Blobソース

ベース: google.appengine.api.datastore_types._BaseByteType

blob 型。任意の長さのバイナリデータを格納するのに適しています。

これは、str 引数のみを受け入れるコンストラクタを除き、Python の str 型と同じように動作します。

class google.appengine.api.datastore_types.BlobKey(blob_key)ソース

ベース: object

Blobstore の blob を識別するために使用されるキー。

このオブジェクトは Blobstore API によって内部でアプリケーションの blob を識別するために使用される文字列をラップします。BlobKey は基盤となる BlobReference エンティティのエンティティの名前に対応します。

このクラスは google.appengine.ext.db と google.appengine.ext.blobstore の両方で API で公開されます。

ToXml()ソース
class google.appengine.api.datastore_types.ByteStringソース

ベース: google.appengine.api.datastore_types._BaseByteType

バイト文字列型。少量のインデックス付きデータを格納するのに適しています。

これは、短いインデックス付きバイト文字列に対してのみ使用されることを除いて、Blob と同じように動作します。

class google.appengine.api.datastore_types.Category(tag)ソース

ベース: unicode

タグ、つまり説明用の単語や語句。エンティティはユーザーによってタグ付けされ、後でそのタグに対するクエリによって返されることがあります。タグは、ランキング結果(頻度)、写真のキャプション、クラスタリング、アクティビティなどにも使用できます。

より詳細な説明は次のとおりです。http://www.zeldman.com/daily/0405d.shtml

これは Atom の「カテゴリ」要素です。XML 出力では、タグは term 属性として提供されます。参照: http://www.atomenabled.org/developers/syndication/#category

tag が文字列でもサブタイプでもない場合、BadValueError が発生します。

TERM = 'user-tag'
ToXml()ソース
google.appengine.api.datastore_types.DatetimeToTimestamp(value)ソース

datetime.datetime を、float としてのエポック時間(ミリ秒)に変換します。:パラメータ値: datetime.datetime

戻り値: long としての値

google.appengine.api.datastore_types.DecodeAppIdNamespace(app_namespace_str)ソース

app_namespace_str を (app_id, namespace) のペアにデコードします。

このメソッドは、EncodeAppIdNamespace の逆であり、datastore_file_stub に必要です。

パラメータ

app_namespace_str - EncodeAppIdNamespace によって作成された、エンコードされた app_id と namespace のペア

戻り値

app_namespace_str にエンコードされた (app_id, namespace) のペア

class google.appengine.api.datastore_types.Email(email)ソース

ベース: unicode

RFC2822 メールアドレス。検証を試みません。MX レコードのチェックを除き、メールアドレスの検証は無駄です。

これは gd:email 要素です。XML 出力では、メールアドレスは address 属性として提供されます。参照: http://code.google.com/apis/gdata/common-elements.html#gdEmail

email が有効なメールアドレスでない場合、BadValueError が発生します。

ToXml()ソース
class google.appengine.api.datastore_types.EmbeddedEntityソース

ベース: google.appengine.api.datastore_types._BaseByteType

proto エンコードされた EntityProto。

これは、str または EntityProto 引数を受け入れるコンストラクタを除き、Blob と同じように動作します。

datastore.Entity.FromProto()、db.model_from_protobuf()、または ndb.LocalStructuredProperty を使用してデコードできます。

google.appengine.api.datastore_types.EncodeAppIdNamespace(app_id, namespace)ソース

アプリ ID と名前空間を連結して 1 つの文字列にします。

このメソッドは、xml と datastore_file_stub に必要です。

パラメータ
  • app_id - エンコードするアプリケーション ID

  • namespace - エンコードする名前空間

戻り値

app_id と namespace のペアの文字列エンコード。

google.appengine.api.datastore_types.FromPropertyPb(pb)ソース

プロパティ PB を python 値に変換します。

パラメータ

pb - entity_pb.Property

戻り値

# 戻り値の型は、引数の string、int、bool、double、users.User の型、または atom 型と gd 型のいずれかによって決まります。

google.appengine.api.datastore_types.FromPropertyTypeName(type_name)ソース

型名が指定された python 型を返します。

パラメータ

type_name - データストア型名の文字列表現。

戻り値

python 型。

google.appengine.api.datastore_types.FromReferenceProperty(value)ソース

参照 PropertyValue をキーに変換します。

パラメータ

value - entity_pb.PropertyValue

戻り値

キー

発生

value が PropertyValue でない場合、BadValueError。

class google.appengine.api.datastore_types.GeoPt(lat, lon=None)ソース

ベース: object

地理的位置は、浮動小数点型緯度と経度の座標によって指定されます。Google マップのようなマッピング サイトと統合させるためによく使用されます。ICBM 座標としても使用されます。

これは georss:point 要素です。XML 出力では、座標は lat および lon 属性として提供されます。参照: http://georss.org/

「<lat>、<lon>」にシリアル化します。無効にシリアル化された文字列が渡された場合、または緯度と経度がそれぞれ [-90, 90] および [-180, 180] の範囲内にある有効な浮動小数点型ではない場合、BadValueError が発生します。

ToXml()ソース
lat = None
lon = None
google.appengine.api.datastore_types.GetPropertyValueTag(value_pb)ソース

指定された entity_pb.PropertyValue に関連付けられたタグ定数を返します。

class google.appengine.api.datastore_types.IM(protocol, address=None)ソース

ベース: object

インスタント メッセージ ハンドル。アドレスとそのプロトコルの両方を含みます。プロトコル値は、標準的な IM スキームまたはプロトコルの IM ネットワークを識別する URL のいずれかです。有効な値は次のとおりです。

値 説明 sip SIP/SIMPLE unknown 不明または未指定 xmpp XMPP/Jabber http://aim.com/ AIM http://icq.com/ ICQ http://talk.google.com/ Google Talk http://messenger.msn.com/ MSN メッセンジャー http://messenger.yahoo.com/ Yahoo メッセンジャー http://sametime.com/ Lotus Sametime http://gadu-gadu.pl/ Gadu-Gadu

これは gd:im 要素です。XML 出力では、アドレスとプロトコルはそれぞれ address 属性と protocol 属性として提供されます。参照: http://code.google.com/apis/gdata/common-elements.html#gdIm

「<protocol> <address>」にシリアル化します。タグが標準的な IM スキームまたは URL でない場合、BadValueError が発生します。

PROTOCOLS = ['sip', 'unknown', 'xmpp']
ToXml()ソース
address = None
protocol = None
class google.appengine.api.datastore_types.Key(encoded=None)ソース

ベース: object

データストア エンティティの主キー。

データストア GUID。Key インスタンスは、すべてのアプリにわたってエンティティを一意に識別し、Get() によりデータストアからエンティティを取得するために必要なすべての情報を含みます。

Key によって __hash__ が実装されます。Key インスタンスは不変であるため、Key はセットで使用することも、辞書のキーとして使用することもできます。

ToTagUri()ソース

XML 出力で使用するこのエンティティの tag: URI を返します。

エンティティの外部キーは、XML 出力でタグ URI として表現できます。RFC 4151 では、タグ URI スキームについて説明しています。http://taguri.org/ には、次のように記載されています。

このタグ アルゴリズムにより、同じアルゴリズムではこれまでに誰も作成できなかった識別子を作成できるようになります。これは頭の中でできる程度に単純で、その作成された識別子は読むことも、書くことも、覚えることも簡単です。識別子は、URI(URL)構文に準拠しています。

エンティティのタグ URI は、アプリの認証ドメインと、URI が生成された

日付を使用します。名前空間固有の部分は <kind>[<key>] です。

たとえば、catsinsinks アプリでキーが「Fluffy」の Kitten のタグ URI は次のとおりです。

tag:catsinsinks.googleapps.com,2006-08-29:Kitten[Fluffy]

このエンティティのキーが不完全な場合、BadKeyError が発生します。

ToXml()ソース

XML 出力で使用するこのエンティティの tag: URI を返します。

エンティティの外部キーは、XML 出力でタグ URI として表現できます。RFC 4151 では、タグ URI スキームについて説明しています。http://taguri.org/ には、次のように記載されています。

このタグ アルゴリズムにより、同じアルゴリズムではこれまでに誰も作成できなかった識別子を作成できるようになります。これは頭の中でできる程度に単純で、その作成された識別子は読むことも、書くことも、覚えることも簡単です。識別子は、URI(URL)構文に準拠しています。

エンティティのタグ URI は、アプリの認証ドメインと、URI が生成された

日付を使用します。名前空間固有の部分は <kind>[<key>] です。

たとえば、catsinsinks アプリでキーが「Fluffy」の Kitten のタグ URI は次のとおりです。

tag:catsinsinks.googleapps.com,2006-08-29:Kitten[Fluffy]

このエンティティのキーが不完全な場合、BadKeyError が発生します。

app()ソース

このエンティティのアプリ ID(文字列)を返します。

entity_group()ソース

このキーのエンティティ グループをキーとして返します。

このキーがルート エンティティ用であり、不完全な場合は、返されるキーは不完全になります。

static from_path(*args, **kwds)ソース

「パス」(種類、ID または名前、…)からキーを構築するための静的メソッド。

これは、アプリケーションが URL などでキーの ID 部分または名前部分のみを使用する場合に便利です。この場合、URL の他の部分で十分なコンテキストが提供されて、残り、つまり、アプリ ID(常に暗黙的)、エンティティの種類、祖先キーが入力されます。ID と名前は通常小さいので、エンドユーザーに表示される URL で使用する場合は、キーの完全な文字列表現よりも適しています。

パラメータ
  • kind - エンティティの種類(str または unicode のインスタンス)

  • id_or_name - ID(int または long)または名前(str または unicode インスタンス)

  • parent - オプションの親キー。デフォルトは None です。

  • namespace - 使用するオプションの名前空間。指定しない場合、namespace_manager のデフォルトの名前空間が使用されます。

戻り値

渡された最後の種類と ID または名前の位置引数を返す .kind() と .id() または .name() メソッドを持つ新しい Key インスタンス。

発生
  • 引数が無効な場合、BadArgumentError。

  • 親キーが不完全な場合、BadKeyError。

has_id_or_name()ソース

このエンティティに ID または名前がある場合は True を返し、そうでない場合は False を返します。

id()ソース

このエンティティの ID を返します。存在しない場合は None を返します。

id_or_name()ソース

このエンティティの ID または名前を返します。存在しない場合は None を返します。

kind()ソース

このエンティティの種類を文字列として返します。

name()ソース

このエンティティの名前を返します。存在しない場合は None を返します。

namespace()ソース

このエンティティの名前空間として文字列を返します。

parent()ソース

このエンティティの親をキーとして返します。このエンティティに親がない場合は、None を返します。

to_path(_default_id=None, _decode=True, _fail=True)ソース

このキーの「パス」をリストとして構築します。

戻り値

キーパスのリスト [kind_1, id_or_name_1, …, kind_n, id_or_name_n]。

発生

このキーに有効なパスがない場合は、datastore_errors.BadKeyError。

google.appengine.api.datastore_types.PackBlob(name, value, pbvalue)ソース

Blob プロパティを entity_pb.PropertyValue にパックします。

パラメータ
  • name - 文字列としてのプロパティの名前。

  • value - Blob インスタンス。

  • pbvalue - この値をパックする entity_pb.PropertyValue。

google.appengine.api.datastore_types.PackBool(name, value, pbvalue)ソース

boolean プロパティを entity_pb.PropertyValue にパックします。

パラメータ
  • name - 文字列としてのプロパティの名前。

  • value - ブール値のインスタンス。

  • pbvalue - この値をパックする entity_pb.PropertyValue。

google.appengine.api.datastore_types.PackDatetime(name, value, pbvalue)ソース

日時型プロパティを entity_pb.PropertyValue にパックします。

パラメータ
  • name - 文字列としてのプロパティの名前。

  • value - datetime.datetime インスタンス。

  • pbvalue - この値をパックする entity_pb.PropertyValue。

google.appengine.api.datastore_types.PackFloat(name, value, pbvalue)ソース

float プロパティを entity_pb.PropertyValue にパックします。

パラメータ
  • name - 文字列としてのプロパティの名前。

  • value - float インスタンス。

  • pbvalue - この値をパックする entity_pb.PropertyValue。

google.appengine.api.datastore_types.PackGeoPt(name, value, pbvalue)ソース

GeoPt プロパティを entity_pb.PropertyValue にパックします。

パラメータ
  • name - 文字列としてのプロパティの名前。

  • value - GeoPt インスタンス。

  • pbvalue - この値をパックする entity_pb.PropertyValue。

google.appengine.api.datastore_types.PackInteger(name, value, pbvalue)ソース

integer プロパティを entity_pb.PropertyValue にパックします。

パラメータ
  • name - 文字列としてのプロパティの名前。

  • value - int または long インスタンス。

  • pbvalue - この値をパックする entity_pb.PropertyValue。

google.appengine.api.datastore_types.PackKey(name, value, pbvalue)ソース

参照プロパティを entity_pb.PropertyValue にパックします。

パラメータ
  • name - 文字列としてのプロパティの名前。

  • value - Key インスタンス。

  • pbvalue - この値をパックする entity_pb.PropertyValue。

google.appengine.api.datastore_types.PackString(name, value, pbvalue)ソース

文字列型プロパティを entity_pb.PropertyValue にパックします。

パラメータ
  • name - 文字列としてのプロパティの名前。

  • value - 文字列、unicode、または文字列のような値のインスタンス。

  • pbvalue - この値をパックする entity_pb.PropertyValue。

google.appengine.api.datastore_types.PackUser(name, value, pbvalue)ソース

ユーザー プロパティを entity_pb.PropertyValue にパックします。

パラメータ
  • name - 文字列としてのプロパティの名前。

  • value - users.User インスタンス。

  • pbvalue - この値をパックする entity_pb.PropertyValue。

google.appengine.api.datastore_types.PartitionString(value, separator)ソース
python2.5 str.partition() と同等です。

TODO: python 2.5 が採用されたときに str.partition() を使用します。

パラメータ
  • value - 分割される文字列

  • separator - 区切り文字列

class google.appengine.api.datastore_types.PhoneNumber(phone)ソース

ベース: unicode

人が読める形式の電話番号またはアドレス。

検証は実行されません。電話番号には、ローカル、長距離、国内、国際、内線番号、TTY、VOIP、SMS、および Skype、XFire、Roger Wilco などの代替ネットワークといった、さまざまな形式があります。それらでは、すべて独自の番号付けとアドレス指定形式が使われています。

これは gd:phoneNumber 要素です。XML 出力では、電話番号は要素のテキストとして提供されます。参照: http://code.google.com/apis/gdata/common-elements.html#gdPhoneNumber

phone が文字列でもサブタイプでもない場合、BadValueError が発生します。

ToXml()ソース
class google.appengine.api.datastore_types.PostalAddress(address)ソース

ベース: unicode

人が読める形式のメールアドレス。メールアドレスの形式はさまざまに異なるため、検証は行われません。

これは gd:postalAddress 要素です。XML 出力では、アドレスは要素のテキストとして提供されます。参照: http://code.google.com/apis/gdata/common-elements.html#gdPostalAddress

address が文字列でもサブタイプでもない場合、BadValueError が発生します。

ToXml()ソース
google.appengine.api.datastore_types.PropertyTypeName(value)ソース

指定されたプロパティ値の型の名前を文字列として返します。

値が有効なプロパティ型でない場合、BadValueError が発生します。

パラメータ

value - 任意の有効なプロパティ値

戻り値

文字列

google.appengine.api.datastore_types.PropertyValueFromString(type_, value_string, _auth_domain=None)ソース

型と文字列の値が指定された、プロパティ値のインスタンスを返します。

このメソッドの逆は、python 値の str() と type() だけです。

これは ISO 8601 形式の日時文字列の非 UTC オフセットをサポートしていないことに注意してください。たとえば、「2002-12-25 00:00:00-08:00」の -08:00 の接尾辞です。これは、-00:00 と +00:00 の接尾辞(UTC)のみをサポートします。

パラメータ
  • type - python クラス。

  • value_string - プロパティの値の文字列表現。

戻り値

「type」のインスタンス。

発生

type_ が datetime で、value_string にタイムゾーン オフセットがある場合、ValueError。

google.appengine.api.datastore_types.PropertyValueToKeyValue(prop_value)ソース

entity_pb.PropertyValue を比較可能でハッシュ可能な「キー」値に変換します。

この関数によって生成された値は、データストアのネイティブの順序を模倣し、指定された PropertyValue を一意に識別します。

パラメータ

prop_value - キー値を構築する entity_pb.PropertyValue。

戻り値

指定されたプロパティ値の比較可能でハッシュ可能な表現。

class google.appengine.api.datastore_types.Rating(rating)ソース

ベース: long

ユーザーが整数で指定するコンテンツの評価。0~100 のスケールに正規化されます。

これは gd:rating 要素です。XML 出力では、アドレスは要素のテキストとして提供されます。参照: http://code.google.com/apis/gdata/common-elements.html#gdRating

評価の 10 進文字列表現にシリアル化します。評価が [0, 100] の範囲の整数でない場合、BadValueError が発生します。

MAX = 100
MIN = 0
ToXml()ソース
google.appengine.api.datastore_types.ReferenceToKeyValue(key, id_resolver=None)ソース

キーを比較可能でハッシュ可能な「キー」値に変換します。

パラメータ
  • key - キー値を構成する entity_pb.Reference または googledatastore.Key。

  • id_resolver - オプションの datastore_pbs.IdResolver。googledatastore.Key 値にのみ必要です。

戻り値

キープロパティ値から派生したキーと互換性のある、指定されたキーの比較可能でハッシュ可能な表現。

google.appengine.api.datastore_types.ResolveAppId(app)ソース

アプリ ID を検証し、デフォルトを提供します。

引数が None の場合、$APPLICATION_ID が代入されます。

パラメータ

app - 検証されるアプリ ID の引数値。

戻り値

app の値、または代入されたデフォルト値。常に空でない文字列になります。

発生

値が空であるか文字列でない場合、BadArgumentError。

google.appengine.api.datastore_types.ResolveNamespace(namespace)ソース

アプリの名前空間を検証し、デフォルトを提供します。

引数が None の場合、namespace_manager.get_namespace() が代入されます。

パラメータ

namespace - 検証される名前空間の引数値。

戻り値

名前空間の値、または代入されたデフォルト値。空の名前空間を示すために空の文字列が使用されます。

発生

値が文字列でない場合、BadArgumentError。

google.appengine.api.datastore_types.RestoreFromIndexValue(index_value, data_type)ソース

インデックス値を正しいデータストア型に復元します。

射影クエリは、データストア インデックスから直接プロパティ値を返します。これらの値は、str、bool、long、float、GeoPt、Key、または User のいずれかのネイティブなデータストア値です。この関数は、元の型がわかっているときに元の値に復元します。

この関数は、通常のエンティティをデコードするときに返される値の型を返します。必ずしも data_type 型であるわけではありません。たとえば、data_type=int は long インスタンスを返します。

パラメータ
  • index_value - 射影されたプロパティの FromPropertyPb によって返される値。

  • data_type - 最初に ToPropertyPb に渡された値の型。

戻り値

復元されたプロパティ値。

発生

値を復元できない場合は、datastore_errors.BadValueError。

google.appengine.api.datastore_types.SetNamespace(proto, namespace)ソース

プロトコル バッファの名前空間を設定するか、フィールドをクリアします。

パラメータ
  • proto - 更新するプロトコル バッファ。

  • namespace - 新しい名前空間(None または空の文字列でフィールドがクリアされます)。

class google.appengine.api.datastore_types.Textソース

ベース: unicode

長い文字列型です。

この型を使用すると、任意の長さの文字列をデータストアに格納できます。str と unicode の引数のみを受け入れるコンストラクタを除き、Python の unicode 型と同じように動作します。

google.appengine.api.datastore_types.ToPropertyPb(name, values)ソース

型固有の entity_pb.PropertyValues を作成します。

入力値の Python 型に基づいて PropertyValue の型と意味を決定します。

注: この関数では何も検証されません。

パラメータ
  • name - 文字列または unicode。プロパティ名。

  • values - このプロパティの値。単一のプロパティまたはそのリスト。すべての値は、サポートされている型である必要があります。値のリストは、すべて同じ型である必要があります。

戻り値

entity_pb.Property インスタンスのリスト。

class google.appengine.api.datastore_types.UtcTzinfoソース

ベース: datetime.tzinfo

dst(dt)ソース
tzname(dt)ソース
utcoffset(dt)ソース
google.appengine.api.datastore_types.ValidateInteger(value, name='unused', exception=google.appengine.api.datastore_errors.BadValueError, empty_ok=False, zero_ok=False, negative_ok=False)ソース

値が有効な整数でない場合、例外が発生します。

整数は、負でも空でもなく整数(int または long のいずれか)である場合に有効です。発生する例外型は例外引数で指定できます。デフォルトで BadValueError になります。

パラメータ
  • value - 検証する値。

  • name - この値の名前。例外メッセージで使用されます。

  • exception - 発生する例外の型。

  • empty_ok - None の値を許可します。

  • zero_ok - ゼロの値を許可します。

  • negative_ok - 負の値を許可します。

google.appengine.api.datastore_types.ValidateProperty(name, values, read_only=False)ソース

プロパティ値を検証するヘルパー関数。

パラメータ
  • name - この対象のプロパティの名前。

  • value - Python のネイティブ型としてのプロパティの値。

  • read_only - 非推奨。

発生
  • プロパティ名が無効な場合、BadPropertyError。プロパティが

  • 正しく検証されなかったか、値が空のリストであった場合、BadValueError。プロパティ値が

  • 型固有の基準を満たしていない場合はその他の例外型

  • (OverflowError など)。

google.appengine.api.datastore_types.ValidatePropertyInteger(name, value)ソース

指定された整数が無効な場合に例外が発生します。

パラメータ
  • name - この対象のプロパティの名前。

  • value - 整数値。

発生

値が符号付き int64 に収まらない場合は、OverflowError。

google.appengine.api.datastore_types.ValidatePropertyKey(name, value)ソース

指定された datastore.Key インスタンスが無効な場合に例外が発生します。

パラメータ
  • name - この対象のプロパティの名前。

  • value - datastore.Key インスタンス。

発生

値が無効な場合は、datastore_errors.BadValueError。

google.appengine.api.datastore_types.ValidatePropertyNothing(name, value)ソース

ノーオペレーション検証関数。

パラメータ
  • name - この対象のプロパティの名前。

  • value - 使用されません。

google.appengine.api.datastore_types.ValidatePropertyString(name, value)ソース

インデックス登録済み文字列プロパティの長さを検証します。

パラメータ
  • name - この対象のプロパティの名前。

  • value - 文字列値。

google.appengine.api.datastore_types.ValidateReadProperty(name, values, read_only=False)ソース

プロパティ値を検証するヘルパー関数。

パラメータ
  • name - この対象のプロパティの名前。

  • value - Python のネイティブ型としてのプロパティの値。

  • read_only - 非推奨。

発生
  • プロパティ名が無効な場合、BadPropertyError。プロパティが

  • 正しく検証されなかったか、値が空のリストであった場合、BadValueError。プロパティ値が

  • 型固有の基準を満たしていない場合はその他の例外型

  • (OverflowError など)。

google.appengine.api.datastore_types.ValidateString(value, name='unused', exception=google.appengine.api.datastore_errors.BadValueError, max_len=1500, empty_ok=False)ソース

値が有効な文字列またはそのサブクラスでない場合、例外が発生します。

文字列は、空ではなく、_MAX_STRING_LENGTH バイト以内で、Blob でない場合に有効です。例外型は例外引数で指定できます。デフォルトで BadValueError になります。

パラメータ
  • value - 検証する値。

  • name - この値の名前。例外メッセージで使用されます。

  • exception - 発生する例外の型。

  • max_len - 許容される最大長(バイト単位)。

  • empty_ok - 空の値を許可します。

google.appengine.api.datastore_types.ValidateStringLength(name, value, max_len)ソース

指定された文字列が長すぎる場合に例外が発生します。

パラメータ
  • name - この対象のプロパティの名前。

  • value - 文字列値。

  • max_len - 文字列の最大長。

発生

値が最大長より大きい場合、OverflowError。

google.appengine.api.datastore_types.typename(obj)ソース

obj の型を文字列として返します。__class__ とは異なり、type(obj) よりも記述的かつ具体的で、オブジェクトにとって安全です。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Python の App Engine スタンダード環境