その他

【Python】mysql-connector-pythonの使い方【MySQL】

その他
この記事は約4分で読めます。

インプルの井上です。本日はmysql-connector-pythonをご紹介いたします。

簡単にMySQLを操作できるOracle社推奨の公式ライブラリとなりますので是非ご活用ください。

mysql-connector-pythonとは?

mysql-connector-pythonはPython プラットフォームと開発用の標準化された

データベースドライバーです。

使い方

import mysql.connector as db

# コネクションの作成
cnx = db.connect(
    host='hostname',
    port='3306',
    user='username',
    password='password',
    database='dbname'
)

# DB操作用にカーソルを作成
cur = cnx.cursor()

これだけでMySQLと接続ができます!簡単ですね。

デフォルトではタプルかリストでのリターンとなるため個人的にはキーバリュー形式で返して

くれるdictの設定をcursorに取り入れるのをオススメいたします。

cur = cnx.cursor(dictionary=True)

テーブル作成

cur.execute(
    """
    CREATE TABLE `test_table` (
    `id` int auto_increment primary key,
    `name` varchar(50) not null,
    `price` int(11) not null,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
    """
)

INSERT処理

cur.execute("INSERT INTO test_table VALUES (1, 'apple', 150)")

# プレースホルダを利用して挿入
cur.execute("INSERT INTO test_table VALUES (2, 'melon', %s)", (5000, ))
cur.execute("INSERT INTO test_table VALUES (%s, %s, %s)", (3 ,'banana', 300))
cur.execute("INSERT INTO test_table VALUES (%(id)s, %(name)s, %(price)s)", {'id': 4, 'name': 'mango', 'price': 10000})

SELECT処理

cur.execute("SELECT * FROM test_table ORDER BY id ASC")

# 全てのデータを取得
rows = cur.fetchall()

for row in rows:
    print(row)

# 出力結果
"""
('id': 1, 'name': 'apple', 'price': 150)
('id': 2, 'name': 'melon', 'price': 5000)
('id': 3 ,'name': 'banana', 'price': 300)
('id': 4, 'name': 'mango', 'price': 10000)
"""

# 1件取得
cur.execute("SELECT * FROM test_table WHERE name=%s", ('apple', ))
print(cur.rowcount)
print(cur.fetchone())

# 出力結果
"""
1
('id': 1, 'name': 'apple', 'price': 150)
"""

UPDATE処理

cur.execute('UPDATE test_table SET name=%s WHERE id=1', ('りんご',))
cur.execute('UPDATE test_table SET name=%s WHERE id=%s', ('メロン', 2))

DELETE処理

cur.execute('DELETE FROM test_table WHERE id = 3')

後続処理

# コミット
cnx.commit()

# トランザクション処理に失敗した場合
cnx.rollback()

# DB操作終了後(カーソルとコネクションを閉じる)
cur.close()
cnx.close()

最後に

いかがでしたでしょうか?個人的には明瞭でコードから処理が読み取れるため重宝しております。

他にも有名なライブラリでPyMySQLやmysqlclientなどがありますのでPython開発で

SQLを使用する際は是非参考にしてみてください。