インプルの井上です。本日は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を使用する際は是非参考にしてみてください。