PythonからSQLで日付型データを取得後苦悶してた。
爺は、日付型のデータを扱うのがことのほか下手です。MySQLを使い始めた頃、めんどうだからということで文字列にしたり整数にしたりして日付のデータを蓄積してたこともありました。
MySQLが一度壊れたときに考え直し、日付は日付型で保管しようと改心しました。だからといって苦手でなくなったわけではありません。そのまま苦手意識は続く…で今日に至っています。
popを使い、辞書型から抜け出せることは分かったのですが…
日付型データを日付文字列にする前に、MySQLから日付データを取得すると辞書型になっています。
[{'date': datetime(2025, 1, 6), …]
これをpopを使い内包表記で取り出すと、以下の通りです。
例:このままでは動きません
dates =[r.pop('date') for r in result]
結果は
[datetime.date(2025, 1, 6),…datetime.date(2024, 11, 20)]
ということで、キッチリ「日付型データ」になっています…。道は遠い…爺的に…。
爺が欲しいのは、剥き身というか、文字列になった日付なのですが、面倒です。
Copilotに尋ねました。pop後にできた日付型データを日付文字列にする方法を教えてくれました…。爺、これでいったん完了…ということでCopilotに感謝を伝え、離れようとしました…。しかし、「もしかして、楽な方法があるんじゃないのか…」と尋ねなおしたら、「もちろん、popを使わずに一気に日付文字列に変換する方法があります。」と具体的に教えてくれました。
最初から教えてくれないあたり、厳しめの先生…の雰囲気…。
内包表記+['date'].strftime で一気に日付文字列になりました。
Copilotに教えてもらったのは以下の通りです。Pythonが動く環境があればMySQLに接続してなくても試せます。
from datetime import datetime
# MySQLから取得した結果
result = [{'date': datetime(2025, 1, 6).date()}, {'date': datetime(2024, 11, 20).date()}]# 一気に日付を文字列に変換
dates_str = [r['date'].strftime('%Y-%m-%d') for r in result]print(dates_str)
知っている人にとっては何でもないことなんでしょうけど…。爺的には新たな学びでした。