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)