안녕하세요

 

이번 포스팅에서는 이클립스에 JUnit 라이브러리를 추가하고 JUnit 테스트를 할 수 있게 환경을 구성해보겠습니다.

 

1. Maven Dependancies 추가

 

JUnit 테스트를 하기 위해서는 두 가지 라이브러리가 필요합니다.

 

springframework spring-test와 JUnit 라이브러리입니다.

 

JUnit 라이브러리의 최신 버전을 확인하기 위해 메이븐 사이트에 접속합니다.

 

mvnrepository.com/

 

Maven Repository: Search/Browse/Explore

Generates Cucumber execution report in PDF format for ExtentReports Last Release on Dec 13, 2020

mvnrepository.com

JUnit 검색하고 2. JUnit 을 클릭합니다.

 

원하는 버전을 선택 후 클릭하면 Maven에 추가할 수 있는 코드를 확인 할 수 있습니다.

 

다음과 같이 pom.xml에 추가합니다.

		<!-- Spring-test -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
        
		<!-- https://mvnrepository.com/artifact/junit/junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.13</version>
			<scope>test</scope>
		</dependency>        

 

다음과 같이 메이븐 디펜던시에 추가된 것을 확인할 수 있습니다.


2. 이클립스 Build Path에 JUnit 라이브러리 추가

 

다음과 같이 JUnit을 사용하려는 프로젝트를 선택 후 마우스 오른쪽 클릭 -> Build Path -> Configure Build Path 를 선택합니다.

 

 

Libraries 탭에서 Add Library를 클릭합니다.

 

JUnit을 선택하고 Next를 클릭합니다.

 

JUnit 4를 선택 후 Finish를 클릭합니다.

 

JUnit 4 라이브러리가 추가된 것을 확인할 수 있습니다. Apply and Close를 클릭합니다.


JUnit으로 테스트할 수 있는 환경이 구성되었습니다.

 

DB에 접속이 잘 되는지로 JUnit 테스트를 해보겠습니다.

 

프로젝트를 선택 후 New -> JUnit Test Case를 클릭합니다.

 

원하는 파일명을 입력합니다.

파일명을 입력 후 Finish를 누르면 src/test/java에 파일이 생성됩니다.

 

새로 생성된 파일에 다음 코드를 입력합니다.

import javax.sql.DataSource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/root-context.xml"})
public class springDatasourceTest {

    @Autowired
    private ApplicationContext context;
    
	@Test
	public void test() {
		DataSource ds = (DataSource) context.getBean("dataSource");
		
		try {
			System.out.println(ds.getConnection());
		} catch(Exception e){
			//예외 발생 시 처리부분

		}
	}
}

JDBC 설정이 필요하시면 다음 링크를 참조하세요.

2020/12/11 - [프로그래밍/Spring Framework] - [JDBC] Spring Maven 프로젝트에 MS-SQL Server 2019 JDBC Driver 설정 방법

 

[JDBC] Spring Maven 프로젝트에 MS-SQL Server 2019 JDBC Driver 설정 방법

이번 포스팅에서는 Spring Maven 프로젝트를 생성 후 MS-SQL과 연결하는 과정을 설명드리겠습니다. MS SQL Server 2019 JDBC Driver 정보가 있는 다음 사이트에 접속합니다. docs.microsoft.com/en-us/sql/connec..

grand-unified-engine.tistory.com

<Ctrl> + <F11>을 눌러 build를 하면 Console창에 다음과 같이 ConnectionId가 출력됩니다.

 

지금까지 Spring Framework에 JUnit 설정하는 방법에 대해 알아보았습니다.

 

이번 포스팅에서는 웹페이지에 JSON 형태로 반환되는 데이터를 크롤링 해보도록 하겠습니다.

 

예제 페이지로 네이버 금융 해외증시를 살펴보겠습니다.

 

해외증시에서 S&P 500을 클릭합니다.

일별 시세에서 마우스 오른쪽 클릭해서 '검사'를 누르거나 Ctrl + Shift + C를 눌러 검사 창을 띄웁니다.

 

일별 시세에서 다른 페이지를 눌러 보겠습니다. 그런데 페이지를 바꿔도 URL 주소가 변경되지 않습니다.

 

왜 그런지 살펴보기 위해 검사 창에 Network 탭에 들어가 봅니다.

 

페이지를 누를 때마다 새로운 URL주소가 생깁니다. 

 

다음과 같이 주소를 선택한 후 마우스 오른쪽 클릭해서 Copy -> Copy link address를 클릭합니다.

 

 

finance.naver.com/world/worldDayListJson.nhn?symbol=SPI@SPX&fdtc=0&page=2
복사한 URL을 살펴보니 worldDayListJson을 호출하고 있습니다.

 

이 주소를 브라우저 창에 넣고 접속 해보도록 하겠습니다.

다음과 같이 JSON 형태의 데이터로 반환하고 있음을 알 수 있습니다.


파이썬에서 json 데이터를 크롤링 하는 코드를 작성해보겠습니다.

 

import pandas as pd
from urllib.request import urlopen
import json

symbol = 'SPI@SPX'
page = 1
url = 'https://finance.naver.com/world/worldDayListJson.nhn?symbol=' + symbol + '&fdtc=0&page=' + str(page)
httpResponse = urlopen(url)
jsondata = json.load(httpResponse)
jsondata

위 코드를 실행하면 json 형태로 데이터를 반환합니다.

 

 

이번 포스팅에서는 Spring Maven 프로젝트를 생성 후 MS-SQL과 연결하는 과정을 설명드리겠습니다.

 

MS SQL Server 2019 JDBC Driver 정보가 있는 다음 사이트에 접속합니다.

 

docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15

 

Download Microsoft JDBC Driver for SQL Server - SQL Server

Download the Microsoft JDBC Driver for SQL Server to develop Java applications that connect to SQL Server and Azure SQL Database.

docs.microsoft.com

다음과 같이 네모칸으로 표시된 파일을 다운받아 라이브러리를 직접 세팅하셔도 됩니다.

 

이번 포스팅에서는 pom.xml에 설정하는 방식으로 진행하겠습니다.

 

스크롤을 내려보면 다음과 같이 pom.xml에 설정하는 방법이 나와 있습니다.

 

copy를 클릭합니다.

 

붙여넣기를 할 때 jdk 버전이 11이 아니라면 위 xml 정보에서 jre11을 환경에 맞게 수정해야 합니다.

예를 들어 jdk가 1.8이라면 jre8로 수정해주시기 바랍니다.

 

pom.xml에 붙여넣기 하고 저장 버튼을 클릭하면 해당 프로젝트의 Maven Dependencies에 MS SQL JDBC가 포함된 것을 확인할 수 있습니다.


properties파일에 데이터베이스 접속 정보를, context.xml에 dataSource Bean을 등록 후 DB에 접속할 수 있는 환경을 세팅해보도록 하겠습니다.

 

src/main/resources에 config 폴더를 생성하고 db.properties파일을 만듭니다.

해당 파일에 다음과 같이 입력합니다.

jdbc.driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url = jdbc:sqlserver://주소;databaseName=데이터베이스명
jdbc.user = 계정id
jdbc.password = password

 

이 정보를 dataSource Bean에 매핑하는 작업을 하도록 하겠습니다.

context.xml을 따로 만드시거나 tomcat 실행과 함께 로딩되는 WEB-INF/spring/root-context.xml에 작성하면 됩니다.

<beans> 루트 엘리먼트 안에 다음을 입력합니다.

	
    <!-- Root Context: defines shared resources visible to all other web components -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:config/db.properties</value> 
            </list>
        </property>
    </bean>	
    
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.user}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

PropertyPlaceholderConfigurer class에는 properties 파일의 위치를 설정합니다.

DriverManagerDataSource class에는 properties 파일에 있는 설정 값을 property로 등록하여 Spring에서 jdbc 설정 값으로 사용할 수 있게 합니다.

 

그런데 DriverManagerDataSource class에 빨간색으로 표시되면서 읽을 수 없다고 나오는 경우가 있습니다.

 

DriverManagerDataSource를 사용하기 위하여 pom.xml에 다음을 입력해 spring-jdbc.jar를 Maven Dependencies로 등록해야 합니다.

		<!-- Spring-jdbc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>

 

다음과 같이 빨간 줄이 사라진 것을 확인 할 수 있습니다.

 

 

Spring에서 MS-SQL DB에 접속할 수 있게 환경 설정을 마쳤습니다.

이번 포스팅에서는 데이터프레임(DataFrame)에 있는 데이터를 SQLite 테이블에 넣는 방법에 대해 설명드리겠습니다.

 

SQLite는 서버없이 사용하는 가벼운 DB 엔진이고 Data Base가 파일로 구성되어 있습니다.

복잡하지 않고 가벼운 DB시스템을 원한다면 SQLite는 적절한 선택이 될 것입니다.

 

SQLite 테이블에 Insert할 데이터프레임 정보는 다음을 참고하시기 바랍니다. 

 

2020/12/06 - [프로그래밍/┗크롤링과 스크레이핑] - [Python] 웹 페이지에 있는 table 읽어서 데이터프레임(DataFrame)에 담기

 

[Python] 웹 페이지에 있는 table 읽어서 데이터프레임(DataFrame)에 담기

이번 포스팅에서는 웹 페이지에 있는 table 태그를 읽어서 데이터프레임(DataFrame)에 담는 과정을 설명드리겠습니다. 네이버 금융에서 시간별 시세(분봉)를 가져와 보도록 하겠습니다. 삼성전자(005

grand-unified-engine.tistory.com

SQLite를 사용하기 위해 DB Browser for SQLite를 설치합니다. 경로는 다음과 같습니다.

 

DB Browser for SQLite (sqlitebrowser.org)

 

DB Browser for SQLite

DB Browser for SQLite The Official home of the DB Browser for SQLite Screenshot What it is DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite. DB4S is for users and dev

sqlitebrowser.org

설치 후 프로그램을 열면 아주 쉬운 인터페이스로 구성되어 있음을 알 수 있습니다.

 

1. 먼저 새 데이터베이스를 생성합니다. 새 데이터베이스를 클릭합니다.
   다음과 같이 데이터베이스가 파일로 저장되는 것을 확인할 수 있습니다.

2. 원하는 데이터베이스 이름을 지정하고 저장을 클릭합니다.

 

3. 테이블을 생성하기 위해 테이블 생성하기 버튼을 클릭합니다.

   다음과 같이 테이블 정의 팝업이 뜹니다.

"필드 추가" 버튼을 눌러 필드를 계속 추가할 수 있고 아래쪽에 스크립트가 자동생성되는 것을 볼 수 있습니다.

확인 버튼을 눌러 테이블을 생성합니다.

 


이제 파이썬 코딩을 해보겠습니다.

 

우선 DataFrame에 있는 데이터를 print해서 확인하는 것까지 해보겠습니다.

 

소스는 다음과 같습니다.

 

from urllib.request import urlopen
from bs4 import BeautifulSoup
import pandas as pd
import datetime

url = 'https://finance.naver.com/item/sise_time.nhn?code=005930&thistime=20201210153000'
df = pd.DataFrame()
with urlopen(url) as doc:
    html = BeautifulSoup(doc, 'lxml')
    pgrr = html.find('td', class_='pgRR')
    s = str(pgrr.a['href']).split('=')
    last_page = s[-1]

for page in range(1, int(last_page)+1):
    page_url = '{}&page={}'.format(url, page)
    df = df.append(pd.read_html(page_url, header=0)[0])

df = df.dropna()
df = df[['체결시각', '체결가', '거래량', '변동량']]
df[['체결가', '거래량', '변동량']] = df[['체결가', '거래량', '변동량']].astype(int)

df.insert(len(df.columns), "코드", '005930')

today = datetime.datetime.today().strftime('%Y-%m-%d')
for row in df.itertuples():
    print("코드 : {}, 체결시각: {}, 체결가: {}, 거래량: {}, 변동량: {}".format(row[5], today + " " + row[1] + ":00", row[2], row[3], row[4]))

 

결과는 다음과 같습니다.

데이터가 잘 들어가 있으니 SQLite 테이블에 Insert 하겠습니다.

 

먼저 sqlite3를 import합니다. 파이썬에 내장되어 있어 바로 import되는 것을 볼 수 있습니다.

 

아래 코드를 추가하고 실행합니다.

 

con = sqlite3.connect("D:/PycharmProject_32bit/Kiwoom/sqlite/stock_jarvis.db")
cur = con.cursor()

for row in df.itertuples():
    sql = "insert into minute_price(code, time, close, volume, diff) values (?, ?, ?, ?, ?)"
    cur.execute(sql, (row[5], row[1], row[2], row[3], row[4]))
con.commit()

 

먼저 DB Browser for SQLite를 이용해서 데이터가 잘 들어갔는지 확인해 보도록 하겠습니다.

파이썬으로도 확인해보겠습니다.

 

cur.execute("select * from minute_price")
 
# 데이타 Fetch
rows = cur.fetchall()
for row in rows:
    print(row)
 
# Connection 닫기
con.close()

튜플 형태로 데이터를 반환하는 것을 확인할 수 있습니다.

 

지금까지 DataFrame 데이터를 SQLite 테이블에 Insert 하는 과정을 살펴봤습니다.

 

 

저처럼 Spring Tools Suite 4(이하 STS4)를 설치하려고 하는데 어려움을 겪은 분들을 위해 포스팅 시작 합니다.

 

Spring Tools 사이트에 접속합니다.

 

spring.io/tools

 

Spring Tools 4 is the next generation of Spring tooling

Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE.

spring.io

 

사이트에 접속 후 아래로 조금 내려 4.8.1 - WINDOWS 64-BIT 를 클릭해서 파일을 다운 받습니다.

spring-tool-suite-4-4.8.1.RELEASE-e4.17.0-win32.win32.x86_64.self-extracting.jar

다운받으면 당황스럽게 zip파일이 아닌 jar파일이 다운됩니다.

 

 

반디를 이용해 압축을 풀어줍니다. 그런데 또 당황스럽게 예전과 같은 STS 실행파일이 보이지 않습니다.

 

안에 있는 contents.zip파일을 압축을 풀어야 sts-4.8.1.RELEASE 폴더가 보입니다.

해당 폴더에 들어가면 다음과 같이 STS 실행파일을 볼 수 있습니다.

 

SpringToolSuite4.exe를 실행합니다.

 

이번 포스팅에서는 스프링 기본 템플릿 프로젝트인 Spring Legacy Project로 진행하겠습니다.

그런데 다음과 같이 Spring Legacy Project가 보이지 않습니다.

 

STS4에서는 기본으로 Spring Legacy Project가 제공되지 않습니다.

Spring Legacy Project를 사용하기 위해서 이클립스 마켓플레이스에서 플러그인을 설치해야 합니다.

help -> Eclipse Marketplace 에 들어갑니다.

 

Find 옆에 spring tools를 입력 후 검색합니다.

Spring Tools 3 Add-On for Spring Tools 4 3.9.14.SNAPSHOT을 선택 후 Install 합니다.

 

Confirm 버튼을 누릅니다.

 

라이센스 동의하고 Finish 버튼을 누릅니다.


다시 시작하겠냐고 물으면 다시 시작하도록 합니다.

 

STS4가 다시 실행되면 File -> New -> Other에 들어갑니다.

legacy를 검색하면 Spring Legacy Project가 보입니다.

 

 

이제 Spring Legacy Project를 생성할 수 있게 되었습니다.

 

+ Recent posts