0
Help us understand the problem. What are the problem?

posted at

updated at

MySQL with Python connector

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 削除するテーブル名;

☑テーブルデータをクリアする(インクリメントもクリア)
TRUNCATE TABLE 削除するテーブル名

☑項目更新
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 テーブル名;

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. ソースサンプル

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?