LoginSignup
1
0

PythonでMySQL接続してデータ取得(mysql-connector-python)

Posted at

前提

ローカル環境でMySQLのusersテーブルからpythonでmysql-connectorを使いDBに接続し
usersテーブルのデータを取得して表示する簡単な処理を試してみます

事前準備

今回のテスト用にDB「python_test」を用意しておきます
「users」テーブルを用意しておき「id, name, email」のカラムを用意しておき
サンプル用に適当にレコード入れておきます

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| python_test        |
| sys                |
+--------------------+

mysql> use python_test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------------+
| Tables_in_python_test |
+-----------------------+
| schema_migrations     |
| users                 |
+-----------------------+

mysql> SELECT * FROM users;
+----+-------+----------------+----------+---------------------+---------------------+
| id | name  | email          | password | inserted_at         | updated_at          |
+----+-------+----------------+----------+---------------------+---------------------+
|  1 | user1 | test1@mail.com | 1234pass | 2024-03-09 23:00:52 | 2024-03-09 23:00:52 |
|  2 | user2 | test2@mail.com | 1234pass | 2024-03-09 23:03:00 | 2024-03-09 23:03:00 |
+----+-------+----------------+----------+---------------------+---------------------+

こちらの記事を参考にusersテーブル(「id, name, email」のカラム)を用意しておいてください

実戦

main.py
import os
import mysql.connector

# DBへ接続
conn = mysql.connector.connect(
  user='root',
  password='',
  host='localhost',
  database='python_test'
)

# DBの接続確認
if not conn.is_connected():
  raise Exception("MySQLサーバへの接続に失敗しました")

cur = conn.cursor(dictionary=True)

# クエリ作成
query__for_fetching = """
SELECT id, name, email
FROM users
ORDER BY users.id
;
"""

cur.execute(query__for_fetching)

for fetched_line in cur.fetchall():
  id = fetched_line['id']
  name = fetched_line['name']
  print(f'{id}: {name}')

実行結果サンプル

1: user1
2: user2

おわり

思っていたより簡単に接続できました
今回のサンプルでは取得したデータの表示だけですが、mysql-connector使えばDBの操作ができるので用途によってはテーブル作成/削除・レコード追加など色々と活用できそうです
クエリが実行できるのでDB扱う上で困ることはなさそうです
今回はローカル環境でのテストでしたが、RDSでDBを用意してLambdaでDBからデータ取得して処理するみたいことができそうなので色々と便利に使えそうです

1
0
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
0