Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SQL AI CLI

자연어로 SQL을 실행하는 터미널 클라이언트. Oracle Select AI에서 영감을 받았고, OpenAI GPT-4o를 사용해 자연어를 SQL로 변환합니다.

SQLite / PostgreSQL / MySQL을 지원합니다.

설치

pip install openai rich psycopg2-binary mysql-connector-python

rich는 선택 사항이지만 설치하면 출력이 훨씬 예쁩니다.

시작하기

# API 키 설정
export OPENAI_API_KEY="sk-..."   # macOS / Linux
$env:OPENAI_API_KEY = "sk-..."   # Windows PowerShell

# SQLite
python sql_ai.py --db sqlite:///mydb.db

# PostgreSQL
python sql_ai.py --db postgresql://user:pass@localhost/mydb

# MySQL
python sql_ai.py --db mysql://user:pass@localhost/mydb

데모 DB 빠르게 만들기

python setup_demo.py
python sql_ai.py --db sqlite:///test.db

사용법

일반 SQL

> SELECT * FROM users LIMIT 5;
> ALTER TABLE users ADD COLUMN phone TEXT; UPDATE users SET phone = '010-0000-0000' WHERE name = 'seohu';

세미콜론으로 구분된 여러 문장을 한 번에 실행할 수 있습니다. 중간에 실패하면 전체 롤백됩니다.

SAI — 자연어 → SQL

> SAI "각 유저가 작성한 글 수"
> SAI "가장 최근에 작성된 글 3개"
> SAI '이메일이 gmail인 유저 목록'

DB 스키마(테이블 구조, FK, 인덱스)를 자동으로 참고해서 SQL을 생성합니다.

메타 커맨드

커맨드 설명
.tables 테이블 목록
.schema 전체 스키마 (CREATE TABLE 문)
.describe <table> 컬럼 · PK · FK · 인덱스 상세
exit 종료
> .describe posts
        posts
 Column      Type     Flags
──────────────────────────────
 id          INTEGER  PK
 user_id     INTEGER  NOT NULL
 title       TEXT     NOT NULL
 content     TEXT     -
 created_at  TEXT     -

Foreign Keys:
  user_id → users(id)

비대화형 실행

python sql_ai.py --db sqlite:///mydb.db -e "SELECT COUNT(*) FROM users;"

옵션

--db      DSN     데이터베이스 연결 문자열 (기본값: sqlite:///test.db)
--api-key KEY     OpenAI API 키 (환경변수 OPENAI_API_KEY로 대체 가능)
-e, --execute SQL 단일 쿼리 실행 후 종료

구조

sql_ai.py       메인 (단일 파일)
setup_demo.py   SQLite 데모 DB 생성 스크립트

About

SQL AI

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages