3

Flask を使用して Python で作成された REST API に取り組んでいます。SQLalchemy と Marshmallow を使用して、API に出入りするデータを処理および保存します。

イベントの作成に使用するルートがあります。POST ペイロードの情報の 1 つとして datetime を取ります。モデルでは、このフィールドに TIMESTAMP タイプを使用します。SQLalchemy の TIMESTAMP 型は、タイムゾーンをサポートする日時です。

Linux で API を実行すると、すべて正常に動作しますが、Windows で実行すると、スキーマに読み込まれると、データがマシュマロのスキーマから load() メソッドに渡され
post_campaign, errors = campaign_schema.load(request.get_json()) ます。datetime は失われます。タイムゾーンデータとそれは私にとって大きな問題です.

私は自分のスキーマで特別な操作を行っていません。これは「古典的な」種類のスキーマです。

基本的に、私のマシンと他のいくつかのマシンでは、

test_campaign (tests.test_setup.Testing) ...
<------------------>
now 2017-05-05 09:52:39.014386+00:00 が datetime で生成されました。
スキーマ 2018-05-05 08:35:17.361864+00:00
データをスキーマ 2018-05-05 08:35:17.361864+00:00にロードする前にutcnow().replace(tzinfo=pytz.utc)
<- ------------------>

私が持っている他のマシンで

test_campaign (tests.test_setup.Testing) ...
<------------------>
now 2017-05-05 09:52:39.014386+00:00
スキーマにロードする前2018-05-05 08:35:17.361864+00:00
スキーマ内のデータ 2018-05-05 08:35:17
<------------------>

私のスキーマ(maはマシュマロです):

class CampaignSchema(ma.ModelSchema):
   class Meta:
   model = Campaign
admingroup_id = field_for(Campaign, 'admingroup_id', dump_only=False)
smtp_id = field_for(Campaign, 'smtp_id', dump_only=False)
mail_template_id = field_for(Campaign, 'mail_template_id', dump_only=False)
landing_page_id = field_for(Campaign, 'landing_page_id', dump_only=False)

campaign_schema = CampaignSchema()
campaigns_schema = CampaignSchema(many=True)

この種の行動について知っている人はいますか?

4

1 に答える 1