Python入門トップページ


目次

  1. SQLite を利用してみよう
  2. SQLite でテーブルを作成してデータを投入してみよう
  3. MySQL の準備を行おう
  4. MySQL を利用してみよう
  5. MySQL でテーブルを作成してデータを投入してみよう

データベースを利用してみよう

MySQL でテーブルを作成してデータを投入してみよう

ここまでの作業で testDB データベースには staffs テーブルがあり,データが登録されていました.ここでは,同じ testDB データベースに Python から departments テーブルを作成し,データの投入も行います.

テーブルを作成しよう

まず,MySQLに接続します.


import mysql.connector
conn = mysql.connector.connect(
        user='dbuser',
        password='hogehogehoge',
        host='192.168.56.101',
        database='testDB'
)

curs = conn.cursor()

テーブルを作成してデータベースから切断します.


curs.execute("""CREATE TABLE departments (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    department VARCHAR(32)
)
ENGINE=InnoDB CHARACTER SET utf8mb4;
""")

curs.close()
conn.close()

MySQL にログインして,テーブルが作成できていることを確認します.

mysql> show tables; ⏎
+------------------+
| Tables_in_testDB |
+------------------+
| departments      |
| staffs           |
+------------------+
2 rows in set (0.00 sec)

mysql> desc departments\G ⏎
*************************** 1. row ***************************
  Field: id
   Type: int
   Null: NO
    Key: PRI
Default: NULL
  Extra: auto_increment
*************************** 2. row ***************************
  Field: department
   Type: varchar(32)
   Null: YES
    Key:
Default: NULL
  Extra:
2 rows in set (0.00 sec)

mysql>

目次に戻る

データを投入しよう

次にデータを投入します.まずは一件のデータを投入します.


import mysql.connector

conn = mysql.connector.connect(
        user='dbuser',
        password='hogehogehoge',
        host='192.168.56.100',
        database='testDB'
)

curs = conn.cursor()

curs.execute('INSERT INTO departments (department) VALUES("人事部");')
conn.commit()

curs.close()
conn.close()

もう一件のデータを投入しますが,プレースホルダーを利用します.プレースホルダーを使うと,データベースに登録したい文字列にクォートやダブルクォートがあっても問題なく処理してくれます.なお,("総務部",)要素が1つしかないタプルを定義していることに注意してください.


import mysql.connector

conn = mysql.connector.connect(
        user='dbuser',
        password='hogehogehoge',
        host='192.168.56.101',
        database='testDB'
)

curs = conn.cursor()
sql = "INSERT INTO departments (department) VALUES (%s);"
curs.execute(sql,("製造部",))
conn.commit()

curs.close()
conn.close()

複数のデータを一気に投入することも可能です.


import mysql.connector

conn = mysql.connector.connect(
        user='dbuser',
        password='hogehogehoge',
        host='192.168.56.101',
        database='testDB'
)

curs = conn.cursor()

data = [
("営業部",), ("研究開発部",)
]
sql = "INSERT INTO departments (department) VALUES (%s);"
curs.executemany(sql, data)
conn.commit()

curs.close()
conn.close()

またプレースホルダーを使うと,データベースに登録したい文字列にクォートやダブルクォートがあっても問題なく処理してくれます.


import mysql.connector

conn = mysql.connector.connect(
        user='dbuser',
        password='hogehogehoge',
        host='192.168.56.101',
        database='testDB'
)

curs = conn.cursor()
sql = "INSERT INTO departments (department) VALUES (%s);"
curs.execute(sql,("総\"務'部",))

conn.commit()

curs.close()
conn.close()

いま登録したデータを確認してみましょう.


import mysql.connector
conn = mysql.connector.connect(
        user='dbuser',
        password='hogehogehoge',
        host='192.168.56.101',
        database='testDB'
)

curs = conn.cursor()

sql = ("""
    SELECT * FROM departments;
    """)

curs.execute(sql)
rows = curs.fetchall()
print(rows)

curs.close()
conn.close()
[(1, '人事部'), (2, '製造部'), (3, '営業部'), (4, '研究開発部'), (5, '総"務\'部')]

目次に戻る