eBEST C# XingAPI 래퍼 - Sqlite 지원 추가
지난 글에 설명한,
eBEST XingAPI의 C# 래퍼 버전 - XingAPINet Nuget 패키지
; https://www.sysnet.pe.kr/2/0/12134
패키지를 보완하기 위해 파이썬 강좌를 참고하고 있는데요, 특정 강의에 보면,
[20강] xingAPI를 이용한 테마별 종목검색 (t1532, t1537)
; https://www.youtube.com/watch?v=URjaIpC4zXc
Sqlite로 저장하는 코드가 (주석 처리되어) 나오는 것을 볼 수 있습니다.
# with sqlite3.connect('...') as conn:
# df.to_sql('테마종목별시세', con=conn, if_exists='replace', index=false)
그래서 저도 ^^ sqlite에 간단하게 저장/로드를 할 수 있는 기능을 추가했습니다. 이를 위해 "Microsoft.Data.SQLite" 패키지를 사용했는데,
C# - 닷넷 응용 프로그램에서 Sqlite 사용
; https://www.sysnet.pe.kr/2/0/12138
이 때문에 XingAPINet 라이브러리에 대한 .NET Framework 의존성이 기존 .NET 4.0에서 (.NET Standard 2.0을 따르는) 4.6.1 이상의 버전으로 바뀌었습니다. 그래서 우선 프로젝트 속성에서 대상 프레임워크 버전을 4.6.1" 이후로 바꿔야 합니다.
그다음, SQLite 파일명을 전달해 초기화하고,
static void Main(string[] args)
{
SqliteExtension.UseSqlite("test.sqlite");
Test(true);
}
XingAPI로 반환받은 Outblock의 내용을 다음과 같이 WriteToDB 메서드를 이용해 저장할 수 있습니다.
static void Test(bool useDemoServer)
{
LoginInfo user = LoginInfo.FromPlainText("...id...", "...password...", "...인증서 password...");
using (XingClient xing = new XingClient(useDemoServer))
{
if (xing.ConnectWithLogin(user) == false)
{
Console.WriteLine(xing.ErrorMessage);
return;
}
{
XQt0167OutBlock outBlock = XQt0167.Get();
outBlock.WriteToDB();
// outBlock.WriteToDB(replace: false); // replace 기본 값 == true
}
}
}
이후, 저장한 내용을 다시 로드하고 싶다면 간단하게 ReadFromDB를 호출하면 됩니다.
XQt0167OutBlock outBlock = XQt0167.ReadFromDB();
간단하죠~~~~! ^^
(
첨부 파일은 이 글의 예제 코드를 포함합니다.)
사실 자동화할 수 있는 것은 WriteToDB와 ReadFromDB까지가 한계입니다. 그 외에 Inblock의 조건에 따라 반환받은 Outblock 데이터를 저장/로드하는 것이라면 자신이 직접 테이블을 만들고 그에 맞게 데이터를 채워 넣어야 합니다. 그 부분도 어떻게든 편의성을 추가할 수 있겠지만, 어쨌든 기반 코드는 추가했으니 향후의 코드는 필요에 따라, 혹은 요청에 따라 보완해 보도록 하겠습니다. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]