스킬 py-sqlmodel-patterns
🗄️

py-sqlmodel-patterns

안전 🌐 네트워크 접근⚙️ 외부 명령어🔑 환경 변수

非同期データベース用のSQLModelパターンを書く

SQLModelはPydanticとSQLAlchemyを組み合わせたものであり、モデルとスキーマについて混乱を招きます。Async SQLAlchemyは同期版とは異なるルールを持っています。このスキルは、周年読み込み、リレーションシップ、セッション、一般的なデータベース操作のためのテスト済みパターンを提供します。

지원: Claude Codex Code(CC)
📊 71 적절함
1

스킬 ZIP 다운로드

2

Claude에서 업로드

설정 → 기능 → 스킬 → 스킬 업로드로 이동

3

토글을 켜고 사용 시작

테스트해 보기

"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パターンを検出する

보안 감사

안전
v4 • 1/16/2026

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.

2
스캔된 파일
509
분석된 줄 수
3
발견 사항
4
총 감사 수
감사자: claude 감사 이력 보기 →

품질 점수

38
아키텍처
100
유지보수성
87
콘텐츠
30
커뮤니티
100
보안
91
사양 준수

만들 수 있는 것

非同期データベース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クエリが発生します。

자주 묻는 질문

SQLModelとSQLAlchemyのどのバージョンがサポートされていますか?
パターンはSQLModel 0.0+およびSQLAlchemy 2.0+で動作します。非同期パターンはSQLAlchemy 2.0+が必要です。
どのデータベースエンジンがこれらのパターンで動作しますか?
パターンはPostgreSQL、MySQL、SQLiteで非同期エンジンと一緒に動作します。PostgreSQLは非同期にpsycopg3を使用します。
これらのパターンをDjango ORMで使用できますか?
いいえ。これらのパターンはSQLModelとSQLAlchemyに固有です。Django ORMには異なるメソッドがあります。
これらのパターンを使用时、データは安全ですか?
はい。パターンは読み取り専用のコード生成ガイダンスです。データはマシンを離れなくなります。
greenlet_spawnが呼び出されていないのはなぜですか?
非同期コードでレイジーロードがブロックされます。代わりに周年読み込みにselectinloadまたはjoinedloadを使用してください。
SQLModelはプレーンなSQLAlchemyとどのように異なりますか?
SQLModelはPydanticとSQLAlchemyを組み合わせたものであり、データの検証とデータベーススキーマの境界を曖昧にします。

개발자 세부 정보

파일 구조

📄 SKILL.md