1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

クリスマスまでにPythonを使ってDiscordのBOTを作るAdvent Calendar 2022

Day 24

【24日目】データを保存しよう【PythonでDiscordBOTを作ろう!】

Last updated at Posted at 2022-12-23

データの保存

例えば、ユーザーの情報を記録しておいたり、ユーザーの選択を変数に保存していて、BOTが再起動した後にもそのデータを読み込みたいってときありますよね。
そんな時に使える方法を解説します。

ローカルに保存する

変数をローカルに保存する方法はいくつかあります。
JSONで保存したり...生テキストで保存したり...
今回は、pickleについて解説します。

Pickleとは!
ピクルスから来てます。(本当に)
オブジェクトをゴニョゴニョにして保存するライブラリです。

import pickle

hensu = {"name": "nattyantv", "description": "Cat Engineer"}

with open('data.pkl', 'wb') as f:
    pickle.dump(hensu, f)

こういう感じにすると、hensudata.pklというファイルで保存されます。
読み込むには、

import pickle

with open('data.pkl', 'rb') as f:
    hensu = pickle.load(f)

print(hensu)
# {"name": "nattyantv", "description": "Cat Engineer"}

こんな感じにします。

オブジェクトを完全に保存(一部のオブジェクトを除く)することができます。

データベースを使う方法

こっちの方がデータの管理がしやすい場合があります。
(ファイルに保存した方がバックアップとかは管理しやすい)

データベースは大体SQL関連のものが使われたりします。
痛い目を見たくない方は、データベースの自作なんかしないで、ちゃんとでかいやつを使いましょう。

いろんな派閥があります。
私はMongoDBをこれから使っていく予定です。
SQL構文覚えなくて楽だしね!()

もちろん、データベースのアクセスに関しても、非同期のライブラリを探しましょう。
多分あります。(MongoDBであればmotor)

また、データベースについては、VPSなんかを使うことをお勧めします。
MongoDBであれば、Altasという無料で使えるシャーディングサーバーがあります。
東京リージョンのGCSとかAWSとかが使えるのでおすすめです。

もうすぐクリスマスだねぇ...

さて、今日はクリスマスイブです。(本当はクリスマスイブってクリスマスの前日の夜のことを指すんだってさ)
まぁ、私はきっと家に引きこもってることでしょう。
彼女ちゃんでもいれば遊んでるかもしれませんが。
残念ながら、ねこじにあには彼女がいません。
絶賛募集中だよ^o^

ってなわけで、明日はクリスマスです。
そして、泣いても笑ってもアドベントカレンダー最終日です。
最後まで一緒にいきましょう!
次回の記事もお楽しみに!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?