ここまでの作業で 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, '総"務\'部')]