pythonスクリプトを起動するだけで、DBからデータを取得できるようにしたい。それも簡単に
最近仕事の終わりに広告活動の一環で会社のTwitterに投稿する業務?をしている。私が主にやるのは定型文のツイートだが、そこに載せるデータは毎日変わるため毎回データを手動で参照してツイートを作って投稿してきた。
いや、Botにしろよ・・・。という指摘はもっともだが、やったことないしプロジェクト3つくらい走ってるし、ぶっちゃけコードを書く時間が取れない。
DB周りの接続の仕方さえわかればこっちのものなのでお家で勉強がてら調査してみることにした。
とりあえず、第一段階として、自動で文を生成するようにしたい。そのためにはDBから最新のデータを取得したい。
環境
- MacOS Mojave
- python 3.7.3
- mysql-connector-python 8.0.16
mysql-connector-python のインストール
今回は難しいことせずに、さらっとDBから値を取得するのが目的なので簡単そうだった、mysql-connector-pythonを使う。
$ pip install mysql-connector-python
上記ではpipでインストールしたが、私はPyCharmを使っているので
Preferences > Project:yourappname > Project Interpreter > (左下の+ボタン)
から上記packageを検索してinstallして使っている。
ソースコード
test.py
import mysql.connector
def main():
connection = mysql.connector.connect(
host='0.0.0.0', # 接続先
port='3306',
user='username', # mysqlのuser
password='password', # mysqlのpassword
database='databasename',
use_pure=True,
)
# コネクションが切れたときに再接続してくれるように設定
connection.ping(reconnect=True)
# 接続できているかの確認
print(connection.is_connected())
cur = connection.cursor()
cur.execute("SELECT * from test_table")
# 全てのデータを取得
rows = cur.fetchall()
for row in rows:
print(row)
# DB操作が終わったらコネクションを閉じる
cur.close()
connection.close()
if __name__ == '__main__':
main()
結果
テスト用に作ったDBから値を取得できていることが確認できた
$ python test.py
(1, '山田太郎', None, None)
(2, '山本太郎', None, None)
ここまでできれば、自動化もすぐできそう。