普通のシステムエンジニアの備忘録

きみひで と言います。個人勉強で触れた技術など備忘禄と時々日常を綴ります。

FlaskでAttributeError: 'str' object has no attribute 'strftime' エラー

備忘

Flaskで、DBに入っている日付項目を更新する画面を作ろうとしてたが、以下のエラーが出てハマった。

 

AttributeError: 'str' object has no attribute 'strftime' 

 

 

■原因

DB項目はString型にしてるのに、入力のクラスはDataFieldクラスにしてたからだと思われる。

DB項目をStringのままにして、何とかstrftime関数で表示を変更して頑張ろうとしたが、どうにもうまくいかなかった。。。

String型にしてたのも特に深い理由はなかったので、DBのテーブル項目をDate型に直した結果、無事に表示されるようになった。

横着しないようにします。

 

 

 

 

 

 

 

 

【トレーニング】Bootstrap5を使いこなす

FlaskでCRUDや認証まわりがチョットできるようになった。

といってもサンプルのコピペだけどね。

 

で、Geminiとの連携やOpenCV使っての画像連携をやろうと思ってた。

しかし、あまりにも画面が寂しい・・・。

 

少しはオシャレな画面じゃないと、いかにも業務アプリっぽい。

AS400みたいな黒と緑文字の画面ほどでは無いにしろ、気分が乗らないアプリ作っても、つまらないのでBootstrapを学んで、おしゃれさん画面を作れるようにすることを、次の目標にする。

 

まずはFlaskで作ったサンプルアプリをベースに化粧してみる。

 

【つぶやき】Flask+Ealstic beanstalk+Geminiの検証

技術検証として

FlaskにGemimiのAPI呼び出し機能を試して入れてちゃんと動作するか確認。

→OK

 

この仮想環境をElastic beanstalkにアップして動作確認。

→こっちもOK

 

 

ここに、OpenCVで画像読み込みとか入れていけば色々できそう。

夢が広がってきた。Flaskのアプリ勉強が佳境なのでおちついたら作るアプリのイメージを固めていこう。

 

Flask url_encodeがimportできない

Flaskの勉強のために、本に書いてある通りに実行すると、url_encodeがimportできないと出てきた。

 

ImportError: cannot import name 'url_encode' from 'werkzeug.urls' (C:\Users\user\miniconda3\envs\flask_env\Lib\site-packages\werkzeug\urls.py). Did you mean: 'urlencode'?

 

上記のエラーでググると英語のサイトにたどり着く。

 

flask-wtfのバージョンが古いとそんなことが起こるよ~

1.X.Xのバージョンなら修正済みだぜ!!

 

って出てくる。

しかし、自分の環境のFlask-WTFバージョンは 1.1.1 問題ないはずなのに(泣

 

で、似たようなエラーで解決したって記事を見たのでダメもとで挑戦したらできた。

 

修正方法

Werkzeugのバージョンを変更

Werkzeug==3.0.1

Werkzeug==2.3.7

そうするとエラーが出なくなった。

 

参考にさせていただいた記事

Flaskでurl_quoteが見つからなくなった問題 #Python - Qiita

 

WerkzeugというライブラリのアップデートとFlaskライブラリの相互関係が崩れたみたいですね。

どこかをアップデートすると、だれか追いついていけない部分が出てくるというのは、マイクロサービスのデメリットと通ずるものを感じます。

これもエンジニアの宿命か。

【SEの金棒】 APMツールの探索

前職でJENNIFERというAPM(Application Performance Monitoring)ツール使ってたんですが、これがとてもGoodでしたので、昔話を。

 

【ツール8選】APMツールとは?基本解説やおすすめツールをご紹介! | QEEE

 

 

昔、開発業務の傍ら自分が導入したパッケージソフトの保守をやってました。

で、ちょいちょいお客さんから「エラーが出たからなんとかしてくれ」って電話があるんですよね。

一言でエラーって言われても分からんわけですよ。

(お客さんもIT屋じゃないんで、そりゃ分かるんですけどね。)

 

そんで、お客さんから発生した画面や時間帯を事細かに聞き取りして、ログを解析するって流れです。

ただログのテキストも大量に出てる&お客さんも事象発生時の記憶が曖昧なこともあって、事象発生時の状況をトレースするのと原因調査が結構難航するってのが日常でした。

 

そこで当時の会社の方針でJENNIFERってのを入れました。

すると、今までテキストのログをGrepしながらエラー探してたのが、GUIで探せるようになったり、怪しげなSQLも簡単に探せるようになったりで、保守業務の効率がグッと上がったってことがありました。

 

あと、保守だけじゃなくシステムテストとか開発中の案件のサーバも監視しておくと、エラー検知とか遅い処理をすぐに見つけることが出来るという付加価値も生まれてました。

 

APMツールに限らず保守や開発の生産性を向上させるツールがたくさん出てきている現在ですから効率的に仕事したいですね。

 

今の会社でAPMツールの導入を提案中で、ふと昔を思い出したのでした。