Python関連のことを調べてみた

Python関連のことを調べてみた

【Django】トランザクション制御パターン 3 選

## はじめに

こんにちは、Web エンジニアの鎌田です。
普段の業務では、フロントエンドに **Angular(TypeScript)**、バックエンドに **Django(Python)** を使っています。

今回はバックエンド開発のトピックです。
データベース更新処理を実装するとき、適切にトランザクション制御することが求められます。
この記事では Django のトランザクション制御についてまとめてみます。

### 注意

この記事では、Django REST framework を使った Web API としての実装を想定しています。
Django 単体で Web アプリケーションを開発する場合とは異なる部分があるかもしれません。

## トランザクションとは

トランザクションとは、**データベース更新処理の単位** のことです。
複数の一連の処理をひとまとまりとして扱いたいとき、それがひとつのトランザクションになります。

### 具体例

わかりづらいので具体例で考えてみましょう。

A さんの銀行口座(残高 50,000 円)から B さんの銀行口座(残高 20,

元記事を表示

Python ログ出力

## はじめに
Python でコーディングを行うとき、logging の機能を使ってログを出力するととても便利です。Python 3.xx であれば、既定で備わっている機能なので、モジュールの追加インストールなども必要ありません。

同機能の詳細な動きは、以下のサイトを参考にさせていただきました。

https://zenn.dev/dencyu/articles/2b58f669bcd473

ただ、詳細なアーキテクチャを理解していなくても、基本的なログ出力機能を実装することはさほど難しくありません。
簡単な実装例とともに、私が理解している範囲で、ログ出力の機能を説明します。

## ログレベル
ログレベルとしては、Debug から Critical までの5段階が準備されています。
Info レベル以上をログ出力し、Error が出力される場合に、具体的な対処につなげるような実装が一般的なようです。
|レベル|説明|
|—|—|
|Debug|詳細なシステムの動きを診断|
|Info|想定通りに動作し|
|Warning|想定通りに動作していない場合や、将来的に問題につな

元記事を表示

‘caching_sha2_password’ is not supportedエラーについて

PythonからMySQLにアクセスしようとすると’caching_sha2_password’がサポートされていないエラーが発生する。
“`エラーメッセージ.
mysql.connector.errors.NotSupportedError: Authentication plugin ‘caching_sha2_password’ is not supported
“`

## 原因
**発生した理由はMySQL8.0で追加されたchaching_sha2_password機能のせい**

MySQL8.0になってからユーザ認証方式として従来の`mysql_native_password`とは別に`caching_sha2_password`が追加された。しかしプログラミング言語からMySQLにつなぐためのドライバの多くが`caching_sha2_password`に対応していないために認証時にエラーが発生する。

## 対応
### 1. MySQLの特定のユーザの認証方式とパスワードの認証方式を変える。
ユーザの認証方式を変更する際に、MySQL側でプラグインがないとエラ

元記事を表示

「単行本の発売日?いつやねん!」を解決する、超シンプル漫画発売日検索サービスを作ってみた

## はじめに
こんにちは!24卒の新米社内SEです。大手ECサイトの保守・運用をメインの会社で社内SEとして勤務しています。最近はbrSEとして中規模ECサイトの案件で中国側とやり取りする業務も担当しています。そんな私ですが、仕事の合間や帰宅後の時間を使って、ちょっとしたサービスを作ってみました。

## サービス概要
「漫画発売日検索サービス」
URL: https://manga-service.web.app/
漫画の最新刊がいつ発売されるのか、いちいち調べるのがめんどくさい!そんな「めんどくさい」を解決するために作りました。

## 技術スタック

フロントエンド: React
バックエンド: Firebase (Firestore)
データ収集: Python (Selenium for web scraping)
ホスティング: Firebase Hosting

## データフロー

1.PythonスクリプトでSeleniumを使用し、週刊少年ジャンプの公式サイトから最新の漫画情報をスクレイピング(集英社は個人運営であれば問題ないみたいです)

2.Seleniumを

元記事を表示

古典野球データ主義者がStatCastに抗ってみる

トラックマンをはじめとするデータ解析ツールが一般的になって久しい今日この頃。

あらゆる野球人が**成績(結果)よりも動き(過程)に重きを置く**ようになり、一つ一つのプレーに対する考え方、選手の評価方法が大きく変わりつつあります。

でも、昨今のこういう流れを何だかポジティブに受け入れられていない自分がいるように思えてならない…。

いや、正直なところそれが本音です。

だって私が子供のころから追っかけてきたのは、
**投手なら(勝/敗/防御率)、野手なら(打率/HR/打点/盗塁)というお決まりのセット**です。

これに嫌というほど触れてきたから、2010年の金本知憲(.241/16本/45打点)とか2011年の荒木雅博(.263/2本/24打点)みたいな成績を見ると、言葉では表現できない「良さ」を感じて涎が止まらなくなるのです。

それなのに、急に**平均回転数だの打球速度だの、バレル%だのスイートスポット%だの、xOBPだのxwOBAだの**と攻め立てられると、保守派の私はただただオロオロすることしかできないのです。

元記事を表示

Raspberrypiでデジタル砂時計を作成しました(加速度センサ、LEDマトリックス)

学校で組み込みの授業があり、Raspberry Piを使用してシステム開発をするという課題をグループで取り組みました。今回は、そこで作成したもの、実際に学び、苦労した部分について紹介していこうと思います。

## Raspberry Piで動作するデジタル砂時計

![doubled_speed_output.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538408/e577eb5f-e1bc-53be-8c2f-3c5d3a19b390.gif)

こちらが私たちのグループが作成したデジタル砂時計です。動画のとおり、傾きによって砂(LEDドット)が落下し、砂時計の砂が落下する様子が描かれています。

Raspberry Pi上でPythonを実行することで処理がスタートします。

![output2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538408/293a5ef7-126d-9ec7-2728-700

元記事を表示

maturin AttributeError モジュールはあるのに関数がない

maturinのビルドをPythonの関数にまとめようとして、テスト段階でAttributeErrorが出ました。
“`
FAILED test_inline_maturin.py::test_build –
AttributeError: module ‘pymodtest’ has no attribute ‘add_two’
“`

## 環境
Github Actions:
– ubuntsu-latest
– Python 3.12
– maturin 1.7<=, <2.0 ## ソースコード [Github] (https://github.com/nodbew/inline-maturin) ## ディレクトリ構成 ``` inline-maturin | -- inline_maturin.py | -- test_inline_maturin.py | -- pymodtest | | -- Cargo.toml | | -- pyproject.toml | | -

元記事を表示

【Python】ロジックパズルを解きたい

夏休みなので Python でロジックパズルを解きました。なお、Python には退屈なことをやらせるべきであって、パズルを解かせるのは台無しだと思います。

### ロジックパズルとは

出典が不十分らしいですが以下の記事のような問題をロジックパズルとよぶことにします。
[ロジックパズル – Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF%E3%83%91%E3%82%BA%E3%83%AB)

例えば図は私が作ったロジックパズルです。
![p1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177688/d15ed433-9e58-9b0a-09d3-6eb245d3aa9f.png)
上図のパズルの正解は以下になります。
PytestのVScodeでのデバッグ

# 内容
pytestコマンドでの検証を行うPythonプログラムにおいて,vscodeのPythonの通常のデバッグは大体以下の通り
“`
> ‘現在の環境で利用しているPython.exeのパス\python.exe’ ‘c:\Users\~~\debugpy\launcher’ ‘xxxxx'(デバッグセッションのポート番号) ‘–‘ ‘~~\debugged.py’
“`
のようになっているため,pytestコマンドでのデバッグができないと思う.
以下はpytestを用いたテスト用のプログラムをpytestを用いてデバッグできるか確かめてみる。

“`python
# test_load_numbers.py

import pytest
import os
from typing import List

def load_numbers_sorted(txt: str) -> List[int]:
with open(txt) as f:
numbers = sorted(int(line) for line in f)
retur

元記事を表示

【Python】患者データから処方薬を予測②~モデル構築・予測編~

# はじめに

Aidemy Premiumのカリキュラムの一環で、受講修了条件を満たすために公開しています。
2024年4月から[Aidemy Premium](https://aidemy.net/grit/premium/)にてデータ分析講座を受講しました。
その成果物として、**与えられた患者データから薬剤を選択する予測モデル**を構築してみました。

このページは**モデル構築・予測編**です。(データ確認編は[こちら](https://qiita.com/Aone0204/items/78c0355375fab3b4772f))

### この記事でわかる・できること

– 教師あり学習(分類)の流れがわかる

### この記事の対象者

– データ分析初心者

### 動作環境・データセット

– OS バージョン
– Windows10 Pro 22H2
– 実装環境
– google colaboratory
– データセット
– 【kaggle】[Drug.csv](https://www.kaggle.com/datasets/sarama

元記事を表示

AWS初心者がClaude 3.5 Sonnetとお話できるLinebot作った話

# はじめに
1ユーザー企業の情シス担当者ですが、CLaide 3.5 Sonnetの力を借りながらLINEでLambdaをキックしてユーザー入力に応答させるLINEボットを作ったので備忘録まとめてみました。

※disclaimer
初心者がClaude3.5に聞きながらこねくり回して作ったので間違いやベストプラクティスに反している部分があるかもしれません。良ければコメントでご教示ください。

# 用意するもの
・AWSアカウント
・LINE Developerアカウント
・まとまった時間
・諦めない心

# Lineアカウントを作ろう!
まず、LINEデベロッパーコンソールにアクセスし、新規アカウントを作成。ビジネス用のアカウントとして登録し、必要な情報を入力します。
ボット用チャネルも作成し、チャネル基本情報の中にある”チャネルシークレット”をどこかに控えておきましょう。同様にMessage API設定の中にある”チャネルアクセストークン”もどこかにコピペしておきます。

# Lambda関数を作ろう!
LINEの設定が終わったらいよいよAWSでLambda関数を作っていきます。

元記事を表示

【Python】患者データから処方薬を予測①~データ確認~

# はじめに

Aidemy Premiumのカリキュラムの一環で、受講修了条件を満たすために公開しています。
2024年4月から[Aidemy Premium](https://aidemy.net/grit/premium/)にてデータ分析講座を受講しました。
その成果物として、**与えられた患者データから薬剤を選択する予測モデル**を構築してみました。

このページは**データ確認編**です。(モデル構築・予測編は[こちら](https://qiita.com/Aone0204/items/31aa6f0bf991456ac454))

### この記事でわかる・できること

– 教師あり学習(分類)の流れがわかる

### この記事の対象者

– データ分析初心者

### 動作環境・データセット

– OS バージョン
– Windows10 Pro 22H2
– 実装環境
– google colaboratory
– データセット
– 【kaggle】[Drug.csv](https://www.kaggle.com/datasets/sarama

元記事を表示

テスラの今後の株価をLSTMで予測

### 1. このページについて
最近,株価の変動が激しいすね.
なので,AIでテスラの未来の株価を予測してみました.

### 2. プログラム
早速プログラムを紹介していく.

##### 必要なライブラリのインポート
まず最初は,必要なライブラリをインポートします.

“`Python
# 必要なライブラリのインポート
import numpy as np # 数値計算用のライブラリ
from sklearn.metrics import r2_score # モデル評価用の関数
import yfinance as yf # Yahoo Financeからデータを取得するためのライブラリ
from datetime import datetime # 日付と時間を扱うためのライブラリ
from sklearn.preprocessing import MinMaxScaler # データの正規化用の関数
from keras.models import Sequential # ニューラルネットワークモデルを構築するためのクラス
from keras.layers

元記事を表示

遅いぞ 5000倍の高速化 エンジニアリング。CUDAストリームで、GPUリソースの効率的な自動配分。クーパイ ライブラリで Python like なコーディング。

![f04edf38-1397-435a-9b4d-4a09bb7056ed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846020/15fcdf6a-5058-0ea6-0ef5-0d085d4d0abb.png)

#### ショートストーリー: 「東京のプログラマとCUDAストリーム」
東京の高層ビル群の中、オフィスの片隅で一人のプログラマ、リュウイチが黙々とキーボードを叩いていた。彼は技術に対して熱い情熱を持ち、その日も新たなプロジェクトに取り組んでいた。テーマは、巨大なデータセットの高速解析。データサイエンスの世界で彼が目指しているのは、誰よりも早く、そして効率的に結果を出すことだった。

リュウイチはGPUの性能を最大限に引き出すための技術に興味を持っていた。彼が目をつけたのは「CUDAストリーム」だった。これは、GPUリソースを効率的に自動配分し、複数のタスクを並列に処理する技術だった。彼は、この技術を使ってデータ解析の速度を飛躍的に向上させることを目指していた。

その日

元記事を表示

ブロックやパドル、ボールの色をカラフルにしました。鮮やかで楽しいゲーム体験。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846020/7b2c1938-b6e5-9bb2-4ef2-439d6a988229.png)

ブロックやパドル、ボールの色をカラフルにしました。各要素に異なる色を設定することで、より鮮やかで楽しいゲーム体験。

PythonでHTMLをデータとして記述し、JavaScriptでシンプルなブロック崩しゲームを作り、Pythonから実行するためのコードの例を示します。以下の手順に従ってください。

Pythonコード: HTMLとJavaScriptのコードをデータとしてPythonに埋め込み、サーバーを立ち上げてHTMLを提供します。

HTMLとJavaScriptコード: シンプルなブロック崩しゲームの実装。

以下のコードをPythonノートブックで実行できます。

“`python
import http.server
import socketserver
import tempfile
import webb

元記事を表示

工学のための微分積分学

“`
import numpy as np
import matplotlib.pyplot as plt

# 定数
V_max = 1.0 # 最大速度
K_m = 0.5 # ミカエリス定数

# 基質濃度の範囲
S = np.linspace(0, 10, 400)

# 反応速度の計算
v = (V_max * S) / (K_m + S)

# プロット
plt.figure()
plt.plot(S, v, label=’Michaelis-Menten Kinetics’)
plt.xlabel(‘[S] (Substrate Concentration)’)
plt.ylabel(‘v (Reaction Velocity)’)
plt.title(‘Michaelis-Menten Kinetics’)
plt.legend()
plt.grid(True)
plt.show()

“`

“`

from scipy.integrate import odeint

# パラメータ
r = 0.5 # 成長速度
K = 100.0 # 環境収容力

元記事を表示

工学と線形代数学

“`
import numpy as np
import scipy.linalg as la
import matplotlib.pyplot as plt

# ガウス消去法による線形方程式の解法
def gaussian_elimination(A, b):
“””
ガウス消去法を用いて線形方程式 Ax = b を解く。
A: 係数行列
b: 右辺ベクトル
“””
A = np.array(A, dtype=float)
b = np.array(b, dtype=float)
n = len(b)
# 前進消去
for i in range(n):
# 対角要素を1にする
A[i] = A[i] / A[i, i]
b[i] = b[i] / A[i, i]
for j in range(i + 1, n):
factor = A[j, i]
A[j, i:] -= factor *

元記事を表示

材料力学Pythonコード

“`
import numpy as np
import matplotlib.pyplot as plt

# Constants
E = 200e9 # Young’s modulus (Pa)
sigma_y = 250e6 # Yield stress (Pa)
epsilon_max = 0.01 # Maximum strain

# Generate strain values
epsilon = np.linspace(0, epsilon_max, 100)

# Elastic deformation (Hooke’s Law)
sigma_elastic = E * epsilon

# Plastic deformation (Von Mises yield criterion)
# For simplicity, we assume that plastic deformation starts when stress reaches yield stress
sigma_plastic = np.where(sigma_elastic <= sig

元記事を表示

電気電子回路のための熱力学

“`
import numpy as np
import matplotlib.pyplot as plt

# 定数
k_B = 1.38e-23 # ボルツマン定数 (J/K)

# 時間設定
t = np.linspace(0, 10, 500) # 0から10秒まで500ポイント

# エネルギーの変化(例: キャパシタから抵抗器へのエネルギー変換)
initial_energy = 1.0 # 初期エネルギー (Joules)
energy = initial_energy * np.exp(-0.1 * t) # エネルギーの減少(例: 指数関数的に減少)

# エントロピーの変化計算
def entropy_change(E_initial, E_final):
return k_B * np.log(E_initial / E_final)

entropy_changes = entropy_change(initial_energy, energy)

# グラフ描画
plt.figure(figsize=(10, 5))
plt.subplot

元記事を表示

【FastAPI JWT tutorial】パスワード(およびハッシュ化)によるOAuth2、JWTトークンによるBearer

# はじめに

以下のチュートリアルをハンズオンします。

https://fastapi.tiangolo.com/ja/tutorial/security/oauth2-jwt/

# JWT(JSON Web Token)とは?

>JWT(JSON Web Token)とは、JSON形式で表現された認証情報などをURL文字列などとして安全に送受信できるよう、符号化やデジタル署名の仕組みを規定した標準規格。
https://e-words.jp/w/JWT.html#google_vignette

要するに、「JSON ベースのデータを暗号化してつくられる文字列」のこと。

以下の解説も分かりやすい。

https://qiita.com/asagohan2301/items/cef8bcb969fef9064a5c

# セットアップ

“`requirements.txt
# パスワードのハッシュを処理するため
bcrypt==4.0.1
passlib[bcrypt]

# JWTトークンの生成と検証を行うため
pyjwt
“`

“`bash
pip instal

元記事を表示

OTHERカテゴリの最新記事