よく使うMySQLのコマンドをPythonで実行する

PythonでMySQLを使うとき、基本的なコマンドの表し方をまとめました。

データベースに関するもの

データベースの作成

CREATE DATABASE 名前;

import mysql.connector

mydb = mysql.connector.connect(
    host='localhost',
    user='myname',
    password='mypasswd'
)

mycursor = mydb.cursor()

mycursor.execute("CREATE DATABASE mydb")

 

データベースの一覧表示

SHOW DATABASES;

...

mycursor=mydb.cursor()

mycursor.execute("SHOW DATABASES")

for db in mycursor:
    print(db)

 

データベースを削除する

DROP DATABASE 名前;

...

mycursor=mydb.cursor()

mycursor.execute("DROP DATABASE データベース名")

 

テーブルに関するもの

tableの一覧

SHOW TABLES;

import mysql.connector

mydb = mysql.connector.connect(
host='localhost',
user='myname',
password='mypasswd'
database='データベース名'
)

mycursor=mydb.cursor()

mycursor.execute("SHOW TABLES")

for tbl in mycursor:
    print(tbl)

 

tableの構造を表示

DESC テーブル名;

...

database='データベース名'
)

mycursor=mydb.cursor()

mycursor.execute("DESC blogposts")

for tbl in mycursor:
    print(tbl)

 

tableの作成

CREATE TABLE テーブル名
フィールド名 データ型,
フィールド名 データ型,
フィールド名 データ型
);

...

mycursor.execute("CREATE TABLE mytable (id INT AUTO_INCREMENT PRIMARY KEY, usrname VARCHAR(255), email VARCHAR(255))")

 

tableを削除

DROP テーブル名;

sql = "DROP TABLE mytable"
mycursor.execute(sql)

レコードに関するもの

レコードデータを更新するには .commit()  が必要です。

レコードを追加

INSERT INTO レコードデータ;

sql = "INSERT INTO mytable (usrname, email) VALUES (%s, %s)"
val = ("Tanaka", "tanaka@mail")
mycursor.execute(sql, val)

mydb.commit()

 

テーブルの中のレコードを表示

SELECT * FROM テーブル名;

sql = "SELECT * from mytable"
mycursor.execute(sql)

for rec in mycursor:
print(rec)

 

レコードの検索

カラムに「文字列」が含まれる入ったデータを検索する。

SELECT * from テーブル名 WHERE カラム LIKE ‘%文字列%'”;

sql = "SELECT * from mytable WHERE usrname LIKE '%文字列%'"
mycursor.execute(sql)

for rec in mycursor:
print(rec)

 

データの個数を表示する

SELECT COUNT(*) FROM テーブル名;

sql = "SELECT count(*) from mytable"
mycursor.execute(sql)

print(mycursor.fetchone()[0])

 

レコードの値の更新

UPDATE テーブル名 SET フィールド名=値 条件式;

※条件式がないと、全レコードを書き換えてしまい、元に戻せない。


sql = "UPDATE mytable SET usrname = 'Yamada' WHERE usrname = 'Tanaka'"
mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, "件の書き換え")

 

レコードの削除

DELETE FROM テーブル名 WHERE 条件式;

※条件式がないと、全レコードを書き換えてしまい、元に戻せない。

sql = "DELETE FROM mytable WHERE usrname = 'Yamada'"
mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, "件を削除")

 

コメント