커뮤니티

DB(D1) 객체를 활용한 외부 python 시스템과의 연동 및 SQL 문법 관련 문의.

프로필 이미지
너무조아
2026-01-09 23:48:14
81
글번호 229691
답변완료

문의 내용:


  현재 해외 선물(MYM)을 예스스팟의 Database(D1) 객체를 사용하여 외부 Python 시스템(SQLite DB 매개)과 매매 신호를 주고받는

  브릿지 시스템을 구축 중입니다. 작업 중 다음과 같은 기술적 문제에 대해 확인 부탁드립니다.


   1. 연동 구조의 적정성:

      예스스팟이 32비트 SQLite ODBC 드라이버를 통해 특정 DB 파일(database.db)에 연결하고, Python 시스템이

  동일한 DB 파일에 데이터를 INSERT하면, 예스스팟의 D1.Select() 메서드로 이를 실시간 감지하여 주문을 내는

  방식이 권장되는 연동 구조인지 궁금합니다.


   2. `D1.Select()` 메서드의 SQL 자동 생성 여부:

      D1.Select("SELECT * FROM table", "name") 호출 시, `near "SELECT": syntax error (1)` 오류가

  발생합니다.

       * 예스스팟 엔진이 내부적으로 SELECT * FROM [설정된_테이블] WHERE를 자동으로 생성하여 사용자 쿼리

         앞에 붙이는 방식인가요?

       * 만약 그렇다면, 사용자는 D1.Select() 인자로 오직 'WHERE 조건절'만 입력해야 하는 것인지 확인

         부탁드립니다.


   3. 예약어 충돌 문제:

      orders, action, status 등 SQL 예약어가 포함된 테이블명이나 컬럼명을 D1.Select에서 조회할 때,

  예스트레이더 엔진에서 이를 회피하기 위한 별도의 식별자(예: [orders] 또는 "orders") 사용 규칙이 있는지

  궁금합니다.

현재 NH선물 YesGlobal 을 이용 중입니다.

  

4. DB 를 사용 하여 외부시스템간 통신이 되었던 사례가 있으면 올려 주시면 감사 하겠습니다.

답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-01-21 10:36:42

안녕하세요 예스스탁입니다. 1 DB가 업데이트되면 즉시 감지하는 기능은 없습니다. 보통 타이머로 일정시간 주기로 DB에 접근해서 사용하는 방식이 가장 많이 사용됩니다. 2 Select를 제외하고 쿼리문을 입력하시면 됩니다. SELECT * FROM [TableName] 쿼리를 실행하고자 한다면 DataBase1.Select(“* FROM [TableName]”)와 같이 스크립팅하셔야 합니다. DB에 따라 테이블명에 [ ]는 생략을 하셔야 하는 경우가 있을 수 있습니다. 3 스팟 자체에 회피를 위한 별도의 식별자 사용규칙이 있지는 않습니다. 즐거운 하루되세요