0
2

More than 3 years have passed since last update.

(自分用)Flask_6(pythonからdbを開く、Mysql基本(phpMyAdmin))

Last updated at Posted at 2020-06-21
  • 今回はFlaskと騙りながら全くFlaskに触らん

項目

  1. pythonからdbを開く
  2. phpMyAdminでdbを作成
  3. dbからデータを取り出してみる

1.pythonからdbを開く

  • phpMyAdminの中のmydbと言うデータベースの中に、playersというテーブルがあるとする↓
    db.png
python
import pymysql

print("動いてる")

connection = pymysql.connect(
    host="localhost",
    db="mydb",
    user="root",
    password="",
    charset="utf8",
    cursorclass=pymysql.cursors.DictCursor
)

sql = "SELECT * FROM players"
cursor = connection.cursor()
cursor.execute(sql)
players = cursor.fetchall()

cursor.close()
connection.close()

for player in players:
    print(player["name"])

(ちょっと長くて読みにくい)

  • これでplayersに入ってるnameカラム(列)をprintしている
  • import pymysqlでpython内でMySQLを使える様にして...
  • connection = pymysql.connect()connectionにSQLへの接続情報を入れてるぽい

    • host="localhost"でMySQLを動かす環境を決めている(自分のpcならローカル、AWSとかのサーバでも良い)
      入れるのはホスト名とか調べれば出てくる気がする
    • db="mydb"でそのMySQLの中のdbを選択し
    • user="root"でルートユーザがMySQLに接続しますよと
    • password="",charset="utf8",パスワードは無し、文字コードはutf-8で読み込んでね
    • cursorclass=pymysql.cursors.DictCursorでDictionary形式で読み込める様になっている、Dictionary形式については調べてくれ!

  • sql = "SELECT * FROM players"sqlという変数の中に実行したいSQLを入れて
  • cursor = connection.cursor()で、connectionに入れた接続情報を.cursor()によってcursorに入れて...
  • cursor.execute(sql).execute(sql)で、cursorに入った接続情報によって接続されたdb内でsqlに入ったコマンドを実行する
  • cursor.close()connection.close()この辺はなんか動かしてたのを閉じてる
  • その後は読み込んだ情報をplayerに入れて、その中のnameってkey(Dictionary形式的な意味で)がついたデータをprintしている
ターミナル
$ cd <作業ファイルがあるディレクトリ名>
$ python <作業ディレクトリ名>

でターミナルとかに実行結果が正常に出れば完了

2.phpMyAdminでdbを作成

  • インストールとかは省く、いつか書くかもしれない
    スクリーンショット 2020-06-22 6.45.08.png

  • 普通にこうすればOK

  • 文字コードはutf8 general ciが良いらしいが果たして...

3.dbからデータを取り出してみる

sql
-- 全てのデータを取り出す
SELECT * FROM players;

-- 一部のカラムだけ取得する
SELECT name, level FROM players;

-- 一部の行だけ取得する
SELECT * FROM players WHERE level >= 7;

-- 複数の条件を組み合わせる
SELECT * FROM players WHERE level >= 7 AND job_id <> 6;

--条件指定とカラム選択を組み合わせる
SELECT name, level FROM players WHERE level >= 7;
  • 全てのデータを取り出すについて
    • SELECT *により全てのカラムを指定し(*で全部ってなるよ)
    • FROM players;で、「どこから?」「playersから」と言っている
  • 一部のカラムだけ取得するについて
    • SELECTの後にカラム名を入れる事で取り出すカラムが選択可能(ここではnamelevel)
  • 一部の行だけ取得するについて
    • FROM ~~の後にWHEREと条件式を入れる事で、任意の行が取り出せる
    • WHEREANDORを使って複数の条件式を適用出来る
使える条件式一覧
a = b
a < b
a > b
a <= b
a >= b
a <> b -- aとbが違うということ

4.終わりに

  • そろそろAWS借りたり環境整えたりでWEBアプリ作るぞー!!!!
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2