PythonでDBアクセスする

こんばんは。きわさです。

今回はpythonでデータベースにアクセスする方法です。

mysql-connector-pythonインストール

下記コマンドでmysql-connector-pythonを取得します。

pip install mysql-connector-python

データベース作成

以降はpythonです。
DBを作成してみます。

import mysql.connector

con = mysql.connector.connect(
            host = "hostname",
            user = "username",
            passwd = "password",
            charset = "utf8"
        )
cursor = con.cursor()
cursor.execute("CREATE DATABASE test_db")
cursor.close()
con.close()

mysql.connector.connectの引数でDBのホスト名やユーザー名、パスワードを渡します。
cursor.executeでクエリを実行します。
上記では test_db というデータベースを作成しました。

テーブル作成

次にテーブルを作成します。

import mysql.connector

con = mysql.connector.connect(
            host = "hostname",
            db = "test_db",
            user = "username",
            passwd = "password",
            charset = "utf8"
        )
cursor = con.cursor()
cursor.execute("CREATE TABLE test_tbl ("
               "id int PRIMARY KEY AUTO_INCREMENT,"
               "name varchar(10) NOT NULL,"
               "price int NOT NULL"
               ")")
cursor.close()
con.close()

connectの引数で、先ほど作成したデータベース名も指定します。
cursor.executeでは、test_tbl というテーブルを作成します。
カラムは id 、name 、price の3つです。

データ挿入

作成したテーブルにデータを挿入してみます。

con = mysql.connector.connect(
            host = "hostname",
            db = "test_db",
            user = "username",
            passwd = "password",
            charset = "utf8"
        )
cursor = con.cursor()
try:
    cursor.execute("INSERT INTO `test_tbl` (`name`, `price`) VALUES ('A', 100)")
    cursor.execute("INSERT INTO `test_tbl` (`name`, `price`) VALUES ('B', 200)")
    cursor.execute("INSERT INTO `test_tbl` (`name`, `price`) VALUES (%s, %s)", ('C', 300))
    cursor.execute("INSERT INTO `test_tbl` (`name`, `price`) VALUES (%(name)s, %(price)s)", { 'name': 'D', 'price': 150 })
    cursor.executemany("INSERT INTO `test_tbl` (`name`, `price`) VALUES (%s, %s)", [('E', 250), ('F', 400)])
    cursor.executemany("INSERT INTO `test_tbl` (`name`, `price`) VALUES (%(name)s, %(price)s)", [{ 'name': 'G', 'price': 350 },{ 'name': 'H', 'price': 150 }])
    con.commit()
except Execption as e:
    con.rollback()
    print(e)
finally:
    cursor.close()
    con.close()

name と price にデータを挿入しています。id はオートインクリメントなので省いています。
cursor.executeの2つめの引数にタプルや辞書を渡してやることもできます。
また、複数データまとめて挿入したい場合はcursor.executemanyを使用します。

データ読み出し

テーブルのデータは以下のように登録されました。

id name price
1 A 100
2 B 200
3 C 300
4 D 150
5 E 250
6 F 400
7 G 350
8 H 150

読み出してみます。

con = mysql.connector.connect(
            host = "hostname",
            db = "test_db",
            user = "username",
            passwd = "password",
            charset = "utf8"
        )
cursor = con.cursor()
try:
    cursor.execute("SELECT * FROM `test_tbl`")
    rows = cursor.fetchall()
    for row in rows:
        print(row)
finally:
    cursor.close()
    con.close()

cursor.executeでクエリ実行し、
cursor.fetchallで結果を取得しています。

printの出力は以下のようになります。
(1, ‘A’, 100)
(2, ‘B’, 200)
(3, ‘C’, 300)
(4, ‘D’, 150)
(5, ‘E’, 250)
(6, ‘F’, 400)
(7, ‘G’, 350)
(8, ‘H’, 150)

以上で、データベースの作成、データの挿入、読み出しができました。

スポンサーリンク