A Python(応用) - user000422/0 GitHub Wiki

ライブラリ

標準ライブラリ(公式配布パッケージ)はPythonインストール時に自動でインストールされる 外部ライブラリ(サードパーティパッケージ)は標準ライブラリ以外の機能を使用したい場合にインストールpipする インストールコマンド pip install sample_lib

種別 ライブラリ
標準 os, time, json, random, datetime
サードパーティー cx_Oracle, paramiko, openpyxl, sshtunnel, pytest, dateutil, flake8

■ライブラリ

ライブラリ 説明 備考
cx_Oracle Oracle 「c++ build」が必要な場合もある
psycopg2 postgreSQL
MSAL MSAL
paramiko SSH接続

例外一覧

例外 説明
TypeError データ型の不一致
KeyError 存在しないキーを参照(辞書等)
FileNotFoundError 存在しないファイルに対してアクセス

フレームワーク

■Djang(ジャンゴ) 王道 最大勢力 開発に必要な機能がデフォルトで搭載されている

dataclass

データ格納用のクラスに使用するのが一般的。(普通のクラスには使用しない) コンストラクタを記述する必要がなくなる。

from dataclasses import dataclass

@dataclass  # デコレーター必須
class Sample():
    name: str = 'taro'  # 宣言とデフォルト値設定

venv

■仮想環境の作成 python3.11 -m venv env 「env」が仮想環境を格納するディレクトリ

■仮想環境の削除 rm -rf [仮想環境を格納するディレクトリ]

■仮想環境の有効化 OSによってコマンドが異なる

Flake8

静的コード解析ツール 公式ドキュメント : https://flake8.pycqa.org/ PEP8に準拠しているか、不具合のもとになる箇所がないかを解析する。 インストール pip install flake8 これは…コードレビューに使える…!

■使用方法

# コマンドラインで対象のPythonファイルを指定するだけ
flake8 /sample/target.py # 基本コマンド
flake8 --ignore=E203 /sample/target.py # ignore 特定のエラーを無視

unittest

お手軽。pytestのようにライブラリのインストールは不要。 JUnitやPHPUnitと似ている。 よくあるエラー1「テストファイルと同じディレクトリに__init__.pyが存在しない」

# 基本型
import unittest
from sample import sample

class SampleTest(unittest.TestCase):
    # setUp テスト実行直前に実行されるメソッド
    def setUp(self):
        print('setUp実行')

    def test_xxx(self):
        """sample関数のテストコード"""
        actual = sample(1, 1)  # 戻り値を取得

        expected = 2 # 期待値

        # assertEqual 他にも比較用のアサーションメソッドは色々ある
        self.assertEqual(actual, expected)  

if __name__ == '__main__':
    unittest.main()
# 省略
# 1つのテストメソッドのなかで複数のアサーションを実行したいときはsubTestメソッドを使う
    def test_xxx(self):
        patterns = [
            [1, 1, 2], # 検証したいパターンA
            [0, 1, 1], # 検証したいパターンB
        ]
        for idx, pattern in enumrate(patterns):
            a, b, expected = pattern # 3つの値を設定

            # withを使用する
            with self.subTest(f'{a} + {b} = {expected}', idx=idx):
                self.assertEqual(sample(a, b), expected)
# 省略

PostgreSQL(psycopg2)

import psycopg2

DB_NAME = 'sample_db'
DB_HOST = 'localhost'
DB_USER = 'sample_user'
DB_PASS = 'sample_password'

# 接続
con = psycopg2.connect(
  host=DB_HOST,
  port='5432'
  user=DB_USER,
  password=DB_PASS,
  database=DB_NAME)