コード一覧

【Python】データベースからデータを引っ張ってきてスプレッドシートに入れる方法

データベース(mysql)からデータを引っ張ってきて、スプレッドシートに入れます。

・動機としては、知りたい数字があるけど、社内で使っているCRMは改修にお金がかかるから易々と変更できない。
・ベンチマークとかを使って、クエリで呼び出したデータをコピペしてスプレッドシートに貼り付けていた。でも、貼り付ける作業も毎日なので、しんどくなってきて、自動でスプレッドシートに更新されればいいのに。と思った。

完成イメージとしては、バッチファイルを作って、毎日パソコンを起動したときに、自動で数字を更新してくれたらいいな。という感覚。

今回やったステップを順番にまとめると以下。

1.貼り付け先のスプレッドシートを用意する。
2.貼り付け先は、A:AとかB:Bとか、縦一列のイメージ。
3.Pythonを使ってスプレッドシートにアクセスできるようにする。
4.Pythonを使って、データベースにアクセスできるようにする。
5.セルを一つづつ更新していたら、APIのエラーが出て更新出来ない。
6.APIエラーが出ないようにクエリの結果をA:Aに貼り付けたい。

こんな感じ。

とりあえずやりたいのが、データベースからデータを引っ張ってきてスプレッドシートに入力するということ。

まずは、pythonを使ってスプレッドシートにアクセルする方法。
これは、調べても山のように出てくるから、「python スプレッドシート 連携」とかで調べたらすぐにわかると思う。

次に、データベースの件。「import mysql.connector」で調べたら出てくる。

次に、セルを一つづつ更新したら、エラーが出る件。
100秒以内に100回だったかな?APIを呼び出すとエラーが出る。
エラーは以下のようなエラー内容

 

1000行以上あるから、worksheet.update_acellを使っていたら、エラーが出る。
worksheet.update_acellは、一つづつ値を更新していくので、それだけAPIを使わなければいけないので、すぐにエラーになる。一気に値を追加しようと思ったら、worksheet.update_cellsを使う。
worksheet.update_cellsを使うとAPIをたたく回数が少なくて済む。
一気に取得して、一気に入力!という感じ。
実際にどんな風に書いているのかコードを張っておく。

これで、エラーで出ずに、一撃でスプレッドシートに追加することが出来た。