【初心者向け】SHOW DATABASES、INFORMATION_SCHEMA、EXISTS関数を使ったデータベースの存在確認
MySQLデータベースの存在を確認するには、いくつかの方法があります。ここでは、代表的な3つの方法について解説します。
方法1:SHOW DATABASESステートメントを使用する
SHOW DATABASES
ステートメントは、現在のMySQLサーバーに存在するすべてのデータベースの一覧を表示します。このステートメントを実行して、目的のデータベースが存在するかどうかを確認できます。
SHOW DATABASES;
例:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
上記の例では、test
というデータベースが存在することが確認できます。
INFORMATION_SCHEMA
データベースは、MySQLサーバーに関するメタデータを含む特別なデータベースです。SCHEMATA
テーブルには、現在のサーバーに存在するすべてのデータベースの名前とその他の情報が格納されています。
SELECT SCHEMA_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = '目的のデータベース名';
mysql> SELECT SCHEMA_NAME
-> FROM INFORMATION_SCHEMA.SCHEMATA
-> WHERE SCHEMA_NAME = 'test';
+------------+
| SCHEMA_NAME |
+------------+
| test |
+------------+
1 row in set (0.00 sec)
方法3:EXISTS関数を使用する
EXISTS
関数は、データベースが存在するかどうかを検査し、真偽値を返します。
SELECT EXISTS(
SELECT 1
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = '目的のデータベース名'
);
mysql> SELECT EXISTS(
-> SELECT 1
-> FROM INFORMATION_SCHEMA.SCHEMATA
-> WHERE SCHEMA_NAME = 'test'
);
+-------+
| EXISTS |
+-------+
| 1 |
+-------+
1 row in set (0.00 sec)
上記の方法のいずれを使用しても、MySQLデータベースの存在を確認することができます。状況に応じて、最適な方法を選択してください。
import mysql.connector
def check_database_exists(database_name):
"""
指定されたデータベースが存在するかどうかを確認する関数
Args:
database_name: 確認したいデータベース名
Returns:
データベースが存在する場合はTrue、存在しない場合はFalse
"""
try:
# MySQLコネクタを作成
connection = mysql.connector.connect(
host="localhost",
user="root",
password="password",
)
# カーソルを取得
cursor = connection.cursor()
# SHOW DATABASESステートメントを実行
cursor.execute("SHOW DATABASES")
# データベースの一覧を取得
databases = cursor.fetchall()
# データベース名が存在するかどうかを確認
database_exists = False
for database in databases:
if database[0] == database_name:
database_exists = True
break
except Exception as e:
print(e)
return False
finally:
# カーソルを閉じる
if cursor:
cursor.close()
# コネクションを閉じる
if connection:
connection.close()
return database_exists
# テスト
database_name = "test"
if check_database_exists(database_name):
print(f"{database_name}データベースは存在します")
else:
print(f"{database_name}データベースは存在しません")
実行方法
- 上記のコードを
check_database_exists.py
というファイル名で保存します。 - 以下のコマンドを実行して、コードを実行します。
python check_database_exists.py
出力例
testデータベースは存在します
補足
上記のコードは、MySQLサーバーに直接接続する方法を使用しています。もし、PythonからMySQLデータベースに接続するライブラリを使用している場合は、そのライブラリのドキュメントを参照してください。
mysqldump
コマンドは、MySQLデータベースをダンプファイルに書き出すコマンドです。このコマンドを使用して、データベースが存在するかどうかを確認できます。
mysqldump --databases --no-data | grep -q '^目的のデータベース名$'
bash
$ mysqldump --databases --no-data | grep -q '^test$'
MySQL Workbenchは、MySQLデータベースを管理するためのGUIツールです。MySQL Workbenchを使用して、データベースが存在するかどうかを確認できます。
- MySQL Workbenchを起動します。
- 左側のナビゲーションパネルで、Databasesノードを展開します。
シェルスクリプトを使用して、データベースの存在を確認することもできます。
#!/bin/bash
# データベース名を取得
database_name="test"
# SHOW DATABASESステートメントを実行
databases=$(mysql -B -N -e "SHOW DATABASES")
# データベース名が存在するかどうかを確認
if [[ " ${databases[@]} " =~ " ${database_name} " ]]; then
echo "${database_name}データベースは存在します"
else
echo "${database_name}データベースは存在しません"
fi
bash
$ ./check_database_exists.sh
mysql database exists