停滞
エラーが取れない
MySQLdb._exceptions.OperationalError: (1698, "Access denied for user 'root'@'localhost'")
このエラーでググると以下の質問が
で、この通りにやってみると
この中にあるmysqldは実際はmysqlで。
どれが正しいのかわからなくなってる
今は
となりmysqlのサービスは停止している
これを
udo mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
となる
うーん、何か壊しちゃったのだろうか?
まだまだ先は遠いなぁ
061/100
#100DaysOfCode
また山が来た
全然MySQLがわからない
とりあえず、テーブル作ってデータをインサートするのは
MySQLクライアントからはできてけれど、
Pythonから接続するのに失敗する
方法はこちら
ここで、importしてライブラリがないと言われたら
今まで通りpip3 install・・・とすればOK
で、エラーが出る
MySQLdb._exceptions.OperationalError: (1698, "Access denied for user 'root'@'localhost'")
きっとMySQLの設定じゃないかな
こういうところにハマるときっと時間がかかる
また山が来た
調べよう
それも楽しみだ
060/100
#100DaysOfCode
selectの世界
次はデータベースへ挑戦
データが取得できたから、それを自分で作ったDBに
落としたい
そして、いつでも簡単に呼び出させたい
そう思ったので、第3段階はデータベースへの
データ入力を考える
データベースは会社ではPostgreSQLを使っている
MySQLは使ってない
とりあえずMySQLをやってみようかな
Ubuntu標準にはいっているみたいだし
違いを調べてみた
読んでみてもよくわからない
でも、単純なのはMySQLなのかな
とりあえず、こちらで進めてみようと思う
058/100
#100DaysOfCode
リストの中の辞書へのアプローチ
APIから送られてくるJSONファイルは辞書型にリスト型がネストしてあって、
そのリスト中に辞書型がネストされてる
リストの中から辞書型を取り出すのをどうしたらいいのかが
わかってなかった
いろいろやってわかった
リストへのアプローチはどれも同じなんだな
.getメソッドでなんでも取り出せる
今回はimageのURLが辞書型になっていて
それを取り出した
a_imageURL = d.get('imageURL',100)
.getメソッドのいいところは、データがなくても続けて取り出せるところだ
しかも、もしデータがなかったら指定したコードを返せる
直接指定するとエラーになってしまう
無事、URLを取り出したら今度はその画像をダウンロードした
ファイル名をいちいち決めるのは面倒だったので、
URLの最後の部分を抽出してファイル名にして保存
画像データはサイトの同じ階層にすべてあったので、
a_imageがURLの文字列だとすると
a_image[35:]
として、必要な部分だけを抽出してそれをファイル名として保存した
REST APIを叩いて、欲しい情報を抽出して、
バイナリーデータを保存
ここまで、できたんだなぁ
第2段階完了だ
ここまでできた
自分を褒めたい
057/100
#100DaysOfCode
リストと辞書の違い
いよいよjsonデータの一覧が取得できて
今度はそこから欲しいデータの取得をすることに
取得方法を調べた
データは入れ子(ネスト)状態になっている
なので、それ用のアプローチが必要
まずは上から順々に絞っていく
最初は'request'と'result'があったので、そこでd['result']とすれば、最初の階層は特定できる。そしてその下のネストにはd['result']['next']とすれば下の階層に降りれる
ここから少しハマった
辞書型だった構造が下に降りるとリスト型になってる
辞書型は{}だが、リスト型は[ ]だ
データを取得するのにリスト型だとfor d in data: とfor文でアプローチできるのに、辞書型はキーでアクセスする。そこの違いがわかってなかった。
今回、階層を降りるたびに
print(type(data))
とやってみてリスト型か辞書型かを見て、リスト型だとわかると、そこからはfor文で取得できるようになった
for d in student:
student_name = d.get('name')
math = d.get('math')
eng = d.get('eng')
print(student_name+':'+str(math)+' '+str(eng))
これで名前と数学の点数、英語の点数をリストアップできた
一つ一つが勉強
毎日やることが大事
楽しいなぁ
056/100
#100DaysOfCode
なんてことはない。解決してた。
新しいurllib.requestを使おうとして複雑なことをやってたのが、
間違いだったのかな?
前の天気予報を読み取る方式で、なんのことはない、できた。
シンプルが一番いい
それを喚起させてくれたのが、この記事
import requests,pprint,json
---略
res = requests.get(url)
pprint.pprint(res.json())
json_data = res.json()with open(output01_json,'w') as f:
json.dump(json_data,f,indent=4,ensure_ascii=False)
urlにGETしたいURL(URI)を設定して、あとは天気予報でやった通りのコードで動いてしまった。
なんか、あっけない。
でも、一度動いたコードは何回も応用が効くんだな、
それがわかった。
だからこそ、コードは短くても理解しなきゃな。
もっと他の情報もとってみよう。
楽しみが増えて嬉しい。
乗り越えるたびに、何か発見があってほんと楽しい。
055/100
#100DaysOfCode