MySQL
記事の背景
MySQLに関する記事は多いのですが、途中まで躓いているものも多い。
本記事は、Windowsに限定してインストール、初期設定、データベース作成
そしてPythonからデータベースへのアクセスまで網羅します。
PandasとMySQLのデータのやり取りは以下参照
https://qiita.com/k2J/items/aad2c1805dfd844a1122
AnacondaとPowerShellの設定
https://python0to1.com/499/
insert_data_bulk
https://itips.krsw.biz/python-mysql-bulk-insert/
1.install
MySQLダウンロードサイト
https://dev.mysql.com/downloads/installer/
ログインについては、スキップする
画面左下の「No thanks, just start my download.」からダウンロードする。
2.インストール設定
Custom
☑MySQL Server
☑MySQL Shell
☑Connector/Pythonを選ぶ
Type & networking
☑Development Computerを選択
☑TCP/IP Port:3306
☑X Protocol Port:33060
☑Open Windows Firewall port for network access
認証設定
☑Use strong password Encryption for Authentication
Use Legacy Authentication Method
3.認証関連
☑ルートパスワード入力
☑ユーザ名追加
User Name:
Host:locahost
Role:DB Admin
パスワード変更(8.0) ※パスワードに@を含んでいる場合、PGMでログインに影響あり
mysql > USE mysql;
mysql > ALTER USER 'root'@'localhost' identified BY 'hoge';
4.MySQL 基本コマンド
☑データベースを表示する
show databases;
☑データベースを作成する
CREATE DATABASE データベース名
;
☑データベースを選択する
use データベース名
;
☑テーブルを表示する
SHOW TABLES;
☑テーブルを追加する
CREATE TABLE テーブル名
(id INT(10) AUTO_INCREMENT, カラム名
VARCHAR(10));
☑テーブルを削除
DROP TABLE IF EXISTS 削除するテーブル名
;
☑テーブル名変更
RENAME TABLE 変更するテーブル名
TO 変更後のテーブル名
☑テーブルデータをクリアする(インクリメントもクリア)
TRUNCATE TABLE 削除するテーブル名
☑テーブルデータ全削除(インクリメントクリアしない)
DELETE FROM 削除するテーブル名
☑項目更新
UPDATE テーブル名
SET カラム名
= 値
WHERE 条件
☑カラム名変更
ALTER TABLE テーブル名
RENAME COLUMN 変更前カラム名
TO 変更後カラム名
;
☑カラム名移動
ALTER TABLE テーブル名
MODIFY 移動するカラム名
TEXT AFTER 移動する位置
;
☑カラム名削除
ALTER TABLE テーブル名
DROP COLUMN カラム名
;
☑インクリメントをリセット(テーブルを空にしている場合)
ALTER TABLE テーブル名
auto_increment = 1;
☑テーブル名の定義を見る
SHOW CREATE TABLE テーブル名
;
☑重複なしでカラムを取り出す場合
SELECT DISTINCT(カラム名
) FROM テーブル名
;
4.Python connector
pip install mysql-connector-python
pip list | grep mysql
mysql-connector-python 8.0.28
5.Flask SQLAlchemy
SQLAlchemyはデータベースに左右されずに共通文法として使用できるメリットがあります。
基本的な使い方はここ
対応DB:MySQL/Postgres/Oracle/SQLServer/SQLite/MongoDB
Flaskに接続する場合の設定例は下記参照:
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://{user}:{password}@{host}/{db_name}".format(**{
'user': Admin_Param.user,
'password': Admin_Param.passwd,
'host': Admin_Param.host,
'db_name': Admin_Param.management_database,
'charset': 'utf8'
})
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_ECHO'] = True
6. ソースサンプル