py-sqlmodel-patterns
非同期データベース用のSQLModelパターンを書く
SQLModelはPydanticとSQLAlchemyを組み合わせたものであり、モデルとスキーマについて混乱を招きます。Async SQLAlchemyは同期版とは異なるルールを持っています。このスキルは、周年読み込み、リレーションシップ、セッション、一般的なデータベース操作のためのテスト済みパターンを提供します。
스킬 ZIP 다운로드
Claude에서 업로드
설정 → 기능 → 스킬 → 스킬 업로드로 이동
토글을 켜고 사용 시작
테스트해 보기
"py-sqlmodel-patterns" 사용 중입니다. async SQLAlchemyでgreenlet_spawnエラーを修正するにはどうすればよいですか?
예상 결과:
- このエラーは、非同期コードでレイジーロードを使用すると発生します
- コレクションにはselectinload()を、単一のリファレンスにはjoinedload()を使用してください
- 例: select(User).options(selectinload(User.assessments))
"py-sqlmodel-patterns" 사용 중입니다. SQLModelでモデルをスキーマから分離するにはどうすればよいですか?
예상 결과:
- 個別のクラスを作成します: データベーステーブルのUser、入力のUserCreate、出力のUserRead
- UserReadはhashed_passwordなどの機密フィールドを除外する必要があります
- 明確さのために一貫した命名規則を使用する
"py-sqlmodel-patterns" 사용 중입니다. N+1クエリの原因と防止方法を教えてください。
예상 결과:
- ループ内で関連オブジェクトを1つずつ取得するとN+1が発生します
- selectinload()またはjoinedload()を使用して周年読み込みを行うことで防止します
- エンジンでecho=Trueを有効にしてログでN+1パターンを検出する
보안 감사
안전This is a documentation-only skill containing markdown patterns and code examples. No executable code, no network calls, no file system access beyond reading the markdown file. Pure prompt-based skill providing SQLModel and async SQLAlchemy best practices. All static findings are false positives: markdown code blocks and documentation links, not actual command execution or credential exfiltration.
위험 요인
🌐 네트워크 접근 (3)
⚙️ 외부 명령어 (33)
🔑 환경 변수 (1)
품질 점수
만들 수 있는 것
非同期データベースAPIを構築する
適切な周年読み込みとセッション管理を使用して、async SQLAlchemyでFastAPIエンドポイントを作成します。
効率的なクエリを書く
N+1クエリを回避し、データ処理パイプラインでのデータベースアクセスパターンを最適化します。
SQLModelパターンを学ぶ
SQLModelプロジェクトでのデータベースモデルとAPIスキーマの違いを理解します。
이 프롬프트를 사용해 보세요
IDでユーザーを取得してからメールアドレスを更新し、変更をコミットするためにSQLModelと非同期セッションを使用してSELECTクエリを書く方法を示してください。
UserとAssessmentモデルが一対多のリレーションシップを持っています。selectinloadを使用して、単一のクエリでユーザーとその評価をロードするにはどうすればよいですか?
ユーザーデータベースのテーブル、UserCreate入力スキーマ、およびpasswordフィールドを除外するUserRead出力スキーマ用に、個別のSQLModelクラスを作成してください。
User -> Assessment -> Questionのリレーションシップを持っています。両方の評価とその質問を1つのクエリで周年読み込みするためにselectinloadをチェーンするにはどうすればよいですか?
모범 사례
- 非同期コードでレイジーローディングエラーを回避するために、リレーションシップには常にselectinloadまたはjoinedloadを使用してください。
- パスワードなどの機密フィールドを誤って公開しないように、データベースモデルをAPIスキーマから分離してください。
- コミット後にデータベースから更新せずにオブジェクトにアクセスする必要がある場合は、expire_on_commit=Falseを使用してください。
피하기
- async SQLAlchemyでレイジーロードを使用すると、greenlet_spawnエラーが発生します。
- API応答でデータベースモデルを直接公開すると、機密フィールドが漏洩する可能性があります。
- 周年読み込みなしでリレーションシップにアクセスすると、アプリケーションを低速させるN+1クエリが発生します。