콘텐츠로 이동

Home

pydbsec

by Jaeminyx-Stoa — Makers of Quantus

DB증권 OpenAPI Python 래퍼
3줄이면 잔고 조회, 5줄이면 자동매매

PyPI Python CI MIT
from pydbsec import PyDBSec

client = PyDBSec(app_key="...", app_secret="...")
print(client.domestic.price("005930").current_price)  # 삼성전자 현재가

국내 + 해외 주식

잔고 조회, 시세, 호가, 매수/매도, 차트, 거래내역 — 국내(KRX)와 해외(NYSE/NASDAQ/AMEX) 모두 지원

CLI 도구

pydbsec price 005930 — 코드 없이 터미널에서 바로 주가 조회, 잔고 확인, 주문 실행

MCP Server

npx pydbsec-mcp — Claude Desktop, Cursor 등 AI 도구에서 "삼성전자 현재가 알려줘" 한마디로 조회

WebSocket 실시간

체결가, 호가 실시간 스트리밍 — async for tick in ws 패턴으로 간편하게

Rate Limiting

API 초당 요청 제한 자동 준수 — 실수로 IP 차단당하는 걸 방지

Type-Safe

Pydantic v2 모델 + mypy strict 통과 — IDE 자동완성, 타입 안전성 보장


Before & After

기존에 DB증권 API를 Python으로 쓰려면:

# 30줄 넘는 코드...
token_resp = httpx.post("https://openapi.dbsec.co.kr:8443/oauth2/token",
    headers={"Content-Type": "application/x-www-form-urlencoded"},
    data={"grant_type": "client_credentials", "appkey": "...", "appsecretkey": "...", "scope": "oob"})
access_token = token_resp.json()["access_token"]
price_resp = httpx.post("https://openapi.dbsec.co.kr:8443/api/v1/quote/kr-stock/inquiry/price",
    headers={"Content-Type": "application/json", "Authorization": f"Bearer {access_token}"},
    json={"In": {"InputCondMrktDivCode": "UJ", "InputIscd1": "005930"}})
print(price_resp.json()["Out"]["Prpr"])  # 필드명이 뭐였더라?

pydbsec을 쓰면:

from pydbsec import PyDBSec

client = PyDBSec(app_key="...", app_secret="...")
print(client.domestic.price("005930").current_price)  # 끝

다양한 사용법

from pydbsec import PyDBSec

with PyDBSec(app_key="...", app_secret="...") as client:
    balance = client.domestic.balance()
    print(f"예탁총액: {balance.deposit_total:,.0f}원")
export DBSEC_APP_KEY="..." DBSEC_APP_SECRET="..."
pydbsec price 005930
pydbsec balance
pydbsec portfolio
{
  "mcpServers": {
    "dbsec": {
      "command": "npx",
      "args": ["pydbsec-mcp"],
      "env": { "DBSEC_APP_KEY": "...", "DBSEC_APP_SECRET": "..." }
    }
  }
}
from pydbsec import AsyncPyDBSec

async with AsyncPyDBSec(app_key="...", app_secret="...") as client:
    balance = await client.domestic.balance()
    price = await client.domestic.price("005930")

설치

pip install pydbsec            # REST + CLI
pip install pydbsec[ws]        # + WebSocket
pip install pydbsec[mcp]       # + MCP Server
pip install pydbsec[ws,mcp]    # All features

시작하기 API 레퍼런스