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)
この種の行動について知っている人はいますか?